Java基础_常用基础内容(进制转换、基本数据类型、运算符、流程控制语句等)

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 22:15   4090   0

一、进制转换

参考这篇文章:

二进制、八进制、十进制、十六进制之间转换

注意:

负数的二进制表现形式:

6= 110

-6:其实就是6的二进制取反+1

取反:将二进制的1变成0,将0变成1

0000-0000 0000-0000 0000-00000 000-0110 (二进制6

1111-1111 1111-1111 1111-1111 1111-1001 (二进制6取反)

+ 0000-0000 0000-0000 0000-0000 0000-0001 (二进制1

1111-1111 1111-1111 1111-1111 1111-1010 = -6

总结:负数的最高位都是1

二、基本数据类型

8

1) 整型

byte 1B 8 -128127

short 2B 16 -2^15(2^15)-1

int 4B 32 -2^31(2^31)-1

long 8B 64 -2^63(2^63)-1

2) 浮点类型

float 4B 32

double 8B 64

3) 字符类型

char 2B 16

4) 布尔型

boolean 1B 8 false/true

注:

1Java中的自动类型提升问题。

1)、正向过程:从低字节到高字节可以自动转换。

byte->short->int->long->float->double

2)、逆向过程:从高字节到低字节用强制类型转换。

例:int a = (int)3.141592653//结果是3

注:逆向转换将丢失精度。

2boolean:只有truefalse

3charJava中用" \u四位十六进制的数字 (即使在注释中出现\u,后面如果跟的不是4个数字,也会报错)"表示将字符转换成对应的unicode编码,字符类型要用单引号括起来。

4、黙认浮点类型为doublefloat数据类型有一个后缀为" f "" F "

5long类型有一个后缀,为" l "或者" L "

三、自动类型提升

byte a = 2;
byte b = 3;
a = a+b;   //编译出错自动类型提升成int
a += b;    //自加没有自动类型提升问题


类型自动提升规则:

ab作某种运算

ab中有double,结果就是double

ab中有float 结果就是float

ab中有long 结果就是long

除此之外,结果都是int

注意:把高字节转成低字节,需要作强制类型转换. byte c=(byte)a+b;

四、移位运算符:

效率最高

>> 有符号右移,补符号位

移负数位,则将该数值加32后再进行移位

数值的2进制是按照补码保存的

>>> 右移后高位都补0

分析:交换两个变量中的值

//1.借助temp临时变量
int temp;
temp=n;
n=m;
m=temp;
System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);


//2.不借助临时变量
n=n+m;
m=n-m;
n=n-m;
System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);


//3.一个数异或同一个数两次,结果不变
n=n^m;
m=n^m;//n^m^m等于n
n=n^m;
System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);


//位运算符,进制转换(十进制转换为十六进制)
int num=60;
int n1=num & 15;//获取num最低4位
System.out.println((char)(n1-10+'A'));
int temp=num>>>4;//要获取下一组四位,将60右移4位
int n2=temp & 15;//对temp的值进行最低四位的获取
System.out.println(n2);


五、逻辑运算符:

& and

| or

&& 先判断前面一个条件,如果为假,则不用计算后一个条件

|| 先判断前面一个条件,如果为真,则不用计算后一个条件

^ 异或(相同为flase,不同为true)

(true=flase )

" + "运算符:两个操作的对象是数值时,是加法。如果有一个是字符串时,则是字符串的连接。

六、转义字符(常用)

\n换行

\b退格。

\r按下回车

\t制表符(Tab键)

七、算数运算符

+ (数值相加,字符串相连。),-(双目:减号。单目:负号), * / %(膜), ++(自增),--(自减)" + "运算符:两个操作的对象是数值时,是加法。如果有一个是字符串时,则是字符串的连接。

八、赋值和比较运算符

赋值运算符:=+= -=*= /= %=

比较运算符:==,!=><>=<=instanceof(检查是否是类的对象)

int a,b,c;

a=b=c=3;//赋值

注意:

short s=3;

s=s+2;//编译失败,s被提升为int类型,运算后结果还是int类型,无法赋值给short类型。

s+=2;//编译通过,因为+=运算符在给s赋值时,自动完成了强制转换工作。

比较运算符的结果都是boolean型(要么true,要么false)。

九、流程控制语句:

Java与C++相同。

If if…..else if….. else if…..else

switch中的变量类型只能是byte shortintchar四种类型。

复习了两天,做做小程序吧!

源代码:

/*
需求:输出"100~999之间水仙花数:"
*/
public class Narcissus
{
 public static void main(String args[])
 {
  System.out.println("100~999之间水仙花数:");
  int k,a,b,c,d;
  for(k=100;k<1000;k++)
  {
      a=k/100;
   b=k%100/10;
   c=k%10;
   d=a*a*a+b*b*b+c*c*c;

  if(d==k)
      System.out.println(k);
  }
 }

}



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP