变量与运算符
变量
基本使用
变量——可以变化的量,格式如下
boolean b=false;
//数据类型 变量名 [= 值]
数据类型
——除了8种基本数据类型外的都是引用类型
基本数据类型赋值方式为值传递
数组默认情况是引用传递,赋的值是地址
基本数据类型
-
整型
| 类型 | 大小 | 范围 |
|---|---|---|
| byte | 1字节 | -128 ~ 127 |
| short | 2字节 | -215 ~ 215-1 |
| int | 4字节 | -231 ~ 231-1 |
| long | 8字节 | -263 ~ 263-1 |
特例:long类型的声明,赋值时后面跟L
long a=3L;
-
浮点数
单精度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
-
字符
特殊字符需要转义,如单引号
char c1 = ’\’’;
-
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的内存地址
类型转换
数据类型自动转换
-
Byte,short,char(根据ASCII码)计算默认转换为int类型,但三者不可相互转化;
-
int->long->float->double
-
任意类型与String进行连接运算,自动转化为字符串;
byte b=3;
b+=2;//等同于b=(byte)(b+2),会进行自动类型转换,不报错(b++同样)
int i=1;
String s=”asd”; //s+i拼接为asd1
-
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;
>
&与;|或;^异或;
~反码;逐位取反(源码,反码,补码)
三元运算符
(条件)?式1:式2; ——条件为真时执行1,为假执行2
看做一个整体,会提升数据精度
Object obj1 = true? new Integer(1) : new Double(2.0);
System.out.println(obj1);//输出1.0

浙公网安备 33010602011771号