一,数据类型
任何类型的数据和字符串进行拼接,其结果就是一个字符串;
//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);//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
4,位运算符:&、|、^、~ (针对二进制的)
5,移位运算
左移,相当于乘法
(左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.)
右移,相当于除法(有无符号右移)
(右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.)



