变量与运算符

变量与运算符

变量

基本使用

变量——可以变化的量,格式如下

 boolean b=false;
 //数据类型 变量名 [= 值]

数据类型

——除了8种基本数据类型外的都是引用类型

基本数据类型赋值方式为值传递

数组默认情况是引用传递,赋的值是地址

基本数据类型

  1. 整型

类型大小范围
byte 1字节 -128 ~ 127
short 2字节 -215 ~ 215-1
int 4字节 -231 ~ 231-1
long 8字节 -263 ~ 263-1

特例:long类型的声明,赋值时后面跟L

 long a=3L;
  1. 浮点数

单精度float与双精度double

特例:float类型的声明,赋值时后面跟f

double类型 小心运算结果为小数时的相等判断,以两数差的绝对值在某一精度内判断

 float a=2.33f;
 
 float num1=0.1f;
 double num2= 1.0/10;
 System.out.println(num1==num2);//false
 //Math.abs(num1-num2)<0.001 (差值非常小,认为相等)
 float num3=36548932463246375654596245f;
 double num4= 36548932463246375654596245+1;
 System.out.println(num3==num4);//ture
  1. 字符

    特殊字符需要转义,如单引号

 char c1 = ’\’’;
  1. boolean类型(无null且不可用0或非0整数代替)不可转化为其他类型

 boolean b1 = ture;
 if(b1){
     //代码块
 }

引用类型

——都可以以null为值,初始化时可以为空

字符串String

 int a=1;
 int b=1;//内存会存储2个1
 
 String c=”hello”;
 String d=”hello”;//内存中只存在一个hello,c赋值hello时创建一个hello的内存,c和d都引用hello的内存地址

类型转换

数据类型自动转换

  1. Byte,short,char(根据ASCII码)计算默认转换为int类型,但三者不可相互转化;

  2. int->long->float->double

  3. 任意类型与String进行连接运算,自动转化为字符串;

 byte b=3;
 b+=2;//等同于b=(byte)(b+2),会进行自动类型转换,不报错(b++同样)
 
 int i=1;
 String s=”asd”; //s+i拼接为asd1
  1. boolean类型不转换

强制转换

 float f1=3.22f;
 int i=(int)f1;
//java中 % 的本质是 a % b = a - a / b * b

String 转换为对应基本数据类型

使用基本数据类型对应包装类的相应__.parse_ 方法 确保转换内容有意义,如不能将hello转换为整型,转换格式不正确程序会终止抛出异常

String s2="21";
String s3="true";
int num1=Integer.parseInt(s2);
float num2=Float.parseFloat(s2);

boolean b=Boolean.parseBoolean(s3);

//String 转换为 char,把字符串第一个字符得到
System.out.println(s2.charAt(0));//0表示第一个字符

运算符

数值运算符

+(正,加,连接字符串)

-(负,减)

*(乘)

/(除,整数相除只保留整数位7/2=3 , 7.0/2=3.5)

%(取余数):java中 % 的本质是 a % b = a - a / b * b

++,--(自增与自减)

赋值运算符

=

关系运算符

<(小于) , >(大于) , >=(大于等于) , <=(小于等于) , ==(相等) , !=(不等于) , instanceof

p instanceof Person:检验p(运行类型)是否为类Person(包括子类)的对象,返回值为boolean型(是输出true,否输出false)

逻辑运算符(boolean)

&逻辑与,|逻辑或,!非,^异或,&&短路与,||短路或

&,&&结果相同,区别在于是否全部执行(左边可以决定结果时,右边不参与运算,如左边为false结果一定为false,不需要右边进行计算),|和||同理

4==4 && 1!=1 //false

位运算符(直接对二进制进行计算)

<<左移:数字A<<数字B 是A的二进制右边加B个0,结果为A乘以B个2;

>>右移:数字A>>数字B 是A的二进制右边去掉B位数(负数时最高位是1前面补1,最高位是0前面补0),结果为A除以B个2;

>>>无符号右移:正数时与>>相同,负数时前面只补0;

&与;|或;^异或;

~反码;逐位取反(源码,反码,补码)

三元运算符

(条件)?式1:式2; ——条件为真时执行1,为假执行2

看做一个整体,会提升数据精度

 Object obj1 = true? new Integer(1) : new Double(2.0);
 System.out.println(obj1);//输出1.0

 

posted @ 2021-10-18 23:55  时-  阅读(61)  评论(0)    收藏  举报