一,数据类型
任何类型的数据和字符串进行拼接,其结果就是一个字符串;
//2,字符串的+表示字符串拼接 public static void main2(String[] args) { String str1 = "ab"; String str2 = "cd"; System.out.println(str1+str2); String ret =10+str1+str2; System.out.println(ret); ret =str1+str2+10+20; System.out.println(str1+str2+10+20);//其结果就是一个字符串; ret =10+20+str1+str2; System.out.println(10+20+str1+str2);//其结果先相加再与字符串拼接 int a = 10; int b = 20; System.out.println("a="+a+",b="+b);//a=10,b=20 System.out.println("a+b="+a+b);//a+b=1020 System.out.println("a+b="+(a+b));//a+b=30 System.out.println(10+""+20+"ab"+"cd");//1020abcd System.out.println("10"+20+"ab"+"cd");//1020abcd System.out.println(10+20+a+b);//60 System.out.println("10"+20+a+b);//10201020 System.out.println(10+"20"+a+b);//10201020 System.out.println("10"+(20+a)+b);//103020 }
二,类型转换
1,大的数据类型---》小的数据类型,显式类型转换(要进行强制类型转换,可能精度丢失)
强制类型转换不光看字节大小,还要看表示的数据;
布尔类型只有true和false,不能进行强制类型转换
//4,long,double,float和int相互赋值 //小范围的可以转换成大范围,大范围转换成小范围需要进行强制转换 public static void main4(String[] args) { int a = 10; long b = 20; //a = b;显示错误 a = (int)b;//进行了强制转换 double d = a; int c = (int)d; //这里可以进行强制类型转换,但可能会精度丢失; float f = a; int e = (int)f; }
2,小的数据类型---》大的数据类型,隐式类型转换
3,不同类型的数据混合运算,范围小的会提升为范围大的
4,计算机在处理小于1个字节 的运算时,会把小于4个字节的全部提升为4个字节在参与运算
//5,数值提升: // int和long混合运算 public static void main5(String[] args) { int a = 10; long b = 20; int c = (int)(a+b);//这里a+b的结果是一个long型 System.out.println(c); //byte和byte的运算 byte a1 = 1; byte b1 = 2; byte c1 = (byte) (a1+b1);//这里a+b是int型,因为计算机会将小于四个字节的类型先提升为四个字节的int. System.out.println(c1); }
//6,int和String之间的转换 public static void main6(String[] args) { //int转成String int num = 10; String str1 = num+"";//方法一 System.out.println(str1); String str2 = String.valueOf(num);//方法二 System.out.println(str2); //String转成int String s = "10"; int n = Integer.valueOf(s); System.out.println(n); }
三,变量
变量的作用域是其所在的代码块(大括号)
变量名只能包含数字字母下划线,不能用数字开头
小驼峰命名法
四,常量
变量:是在程序运行的时候才会去取这个数据;
常量:是在程序编译的时候,就知道这个地方是几了
1,字面值常量
2,final关键字修饰的常量
常量不能在程序运行过程中发生修改
五,运算符
1,算术运算符:+ - * / %(取余)
//7,运算符++a,a++ public static void main7(String[] args) { int a = 10; a++;//等价与++a System.out.println(a); } //8,运算符int b = a++; int b = ++a public static void main8(String[] args) { int a = 10; int b = a++;//结果为10,注意区分++前置(这时要先++再运行,如int b = ++a,则结果为11.) System.out.println(b); System.out.println(a); }
2,关系运算符的返回值只有两个,要么true,要么false
//9,关系运算符,结果为True或Ffalse public static void main9(String[] args) { int a = 1; int b = 2; System.out.println(a==b);//F System.out.println(a!=b);//T System.out.println(a>b);//F System.out.println(a<b);//T System.out.println(a>=b);//F System.out.println(a<=b);//T }
3,逻辑运算符
逻辑与&&
特点:短路,如果表达式1为假,就不会继续执行表达式2了;
逻辑或||
特点:短路,如果表达式1为真,那么久不执行表达式2了;
//10,逻辑非!(操作为true,则结果为false;操作为false。则结果为true) public static void main(String[] args) { int a = 110; int b = 20; System.out.println(!(a<b));//a<b操作为false,逻辑非的结果为true //逻辑或||(两个操作都为false,则结果为false,否则为true) int c = 30; System.out.println(a<b||b<c);//a<b操作为false,b<c操作为true,则结果为true }
4,位运算符:&、|、^、~ (针对二进制的)
5,移位运算
左移,相当于乘法
(左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.)
右移,相当于除法(有无符号右移)
(右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.)