字符串类型
字符串名命:String 变量名 = “初始值”;
字符串使用双引号,字符用单引号
字符串类型不是基本类型,是引用类型
是转义字符 n换行 t水平制表符
例如:打印”book”
String str = ""book"";
字符串的相加表示拼接,输出结果为abcd
String str1 = "ab"; String str2 = "cd"; System.out.println(str1+str2);
下面代码输出结果不一样,没有字符串出现时,先进行计算,有字符串出现会进行拼接
任何类型的数据和字符串进行拼接,其结果就是一个字符串
System.out.println(str1+str2+10+20); System.out.println(10+20+str1+str2);
若想打印1020abcd
System.out.println(10+""+20+str1+str2);
输出a= 10,b= 20
int a = 10;
int b = 20;
System.out.println("a= "+a+",b= "+b);
输出a+b=30
System.out.println("a+b= "+(a+b));
变量的作用域
变量:
成员变量:类内部,方法的外部所定义的变量。包括:实例成员变量,静态成员变量(类变量)等
局部变量:一般是在方法内部的变量
变量的作用域:指变量可以作用的范围。
{
int c = 1;
}
System.out.println(c);
错误,无法输出,已经超出了c的作用域。
理解类型转换
大的数据类型给小的数据类型,要进行强制类型转换(也叫显式类型转换),但是可能精度丢失
数据类型不同时,也要进行强转。
如int型转为long型:
int a =10; long l = 11; a = (int)l;
小的数据类型给大的数据类型,进行了隐式类型转换。
布尔类型不可以和其他7个基本类型进行转换。
理解数值提升
小类型和大类型进行运算时,会把小类型提升为大类型再运算,得到的结果是大类型
如:int型a和long型b相加,会先把a提升为long类型,然后和b进行运算,结果也是long类型。
计算机在处理小于4字节的运算的时候,会先提升为4字节再运算。
所以下了代码会报错:
byte a = 1; byte b = 2; byte c = a+b; System.out.println(c);
可以修改为
byte c = (byte) a+b;
但是
byte c =1+2;
不会报错
因为a+b是变量,1+2是常量。
变量:是在程序运行的时候,才会去取这个数据
常量:是在程序编译的时候,就知道这个地方是几了
int和String的转换
将int型转换为String型的两种方法
int num = 10; String str1 = num+""; String str2 = String.valueOf(num);
将String型转换为int型
String str ="10"; int num = Integer.valueOf(str);
运算符
基本运算符 + - * / %
%不仅可以对int也可以对double
0不能作为除数
增量赋值运算符
+= -= *= /= %=
a+=1;等价于a=a+1;其余同理
自增/自减运算符
++ --
a++后置++,先使用,再++
++a前置++,先++,再使用
--与++同理
关系运算符
== != < > <= >=
关系运算符的表达式返回值都是boolean类型
逻辑运算符
&& || ! 与或非
表达式1&&表达式2 ,要求表达式1,2都是布尔表达式的,&&的特点是短路:若表达式1为假,则表达式2不执行。
表达式1||表达式2 ,要求表达式1,2都是布尔表达式的,||的特点是短路:若表达式1为真,则表达式2不执行。
!布尔表达式
位运算符
& | ^ ~
& 按位与:只要有0,这一位结果为0
| 按位或:只要有1,这以为结果为1.
^ 按位异或:相同为0,相反为1
0^a=a a^a=0
~ 按位取反:0变1,1变0
移位运算
<< >> >>> 左移,右移,无符号右移
左移:移动的是二进制位,最右侧补0
<<1左移1位 <<2左移两位,左移相当于乘法,原本的数乘2的n次方,n是移动的位数
右移:最左侧补的是当前数字的符号位
右移相当于除法,原本的数除以2的n次方,n是移动的位数,负数右移时不适用。
无符号右移:不管符号位是0还是1,都补0.
条件运算符
表达1?表达式2:表达式3
当表达式1为真时,整个表达式为表达式2的值,当表达式1的值为假时,整个表达式的值为表达式3的值
这个运算符也是java中唯一一个三目运算符。



