数据类型空间大小
1 2 3 4 5 6 7 8 9 基本(没必要都记住) 字 节------byte------1字节 短整型------short------2字节 整 型------ int ------4字节 长整型------ long------8字节 布尔型------boolean—1bit 单精度------ float ------4字节 双精度------double------8字节 字 符------ char ------2字节
万物皆对象,但是像byte,short这种不是对象,所以我们需要由包装类引入对象的概念。通常我们在后面加一个点.就可以获得其属性
1 2 3 4 5 6 7 byte------Byte short------Short int------Integer long-----Long float-----Float double-----Double char------Character
以下代码作演示
1 2 3 4 5 6 7 8 public static void main(String[] args) { byte byte_max = Byte.MAX_VALUE; //最大值 byte byte_min = Byte.MIN_VALUE; //最小值 System.out.println("the maximum of byte is "+byte_max); System.out.println("the minimum of byte is "+byte_min); System.out.println("byte对应的比特位"+Byte.SIZE); System.out.println("byte对应的类型"+Byte.TYPE); }
拓展
1 2 3 4 5 6 7 8 在Java中数字默认是int类型; 所以在初始化赋值long类型时候应该 long 变量 = 1L;(L小写也可) int num = 1; //定义一个int类型 long num1 = 1; //设计自动转换,因为在java中默认数字为int类型 long num 2 = 2L; //定义一个long类型 char ch = 91; 代表ch为’a‘; 当要查看 字符对应的ASCII码时 可以int ch2 = 'a';
数据类型转换(这里直接给个例子就行)
1 2 3 4 5 6 int a = 55,b = 9; float g,h; g = a / b; h = (float)a / b; System.out.println(g); //6.0 System.out.println(h); //6.111111111
基本数据类型的默认值
1 2 3 4 5 6 7 8 byte—(byte)0; short—(short)0; int—0; long—0L; float—0.0F; double—0.0D; char— ’ '或\u0000(也代表空,它为Unicode字符) 打印时像这样使用’\u0000‘ boolean—false
在C/C++中,非0数统一视为真,反则为假,在Java中因为有了布尔变量true和false,除此之外没有任何值,因而它和任何数字都无关
拓展
打印int类型中最小值到最大值是否为偶数1 2 3 4 5 6 7 public static void main(String[] args) { for(int i = Integer.MIN_VALUE;i<=Integer.MAX_VALUE;i++) { boolean isEven = (i%2==0); System.out.println("i = "+i+",isEven = "+isEven); 也等价于 System.out.println("i=%d,isEven=%b",i,isEven); }
拼接符号的使用 “+”的功能:加法运算与拼接符号
加法运算:只有数字的时候,结果得到数字;
拼接符号:有字符串的时候,与字符串进行相加,得到字符串;
1 2 3 4 5 6 7 8 public static void main(String[] args) { int x1 = 5; int x2 = 2; System.out.println(x1+x2); System.out.println(x1+x2+"1"); System.out.println(x1+x2+"K"); System.out.println("A"+x1+x2); }
运算符
1 2 3 4 5 6 7 8 1.1、赋值运算符(“=”)------太简单不深入了 但是还是提醒一下,左边必须是变量!!!避免0=1;的低级错误!!! 1.2、一元运算符 +/- ------正(负)号 ! ------ NOT,非 ~ ------代表取补码 ++ ------ 自增运算符 -- ------ 自减运算符
补码:
在OS底层中数值一致用补码进行运算和表示(存储):
主要原因:使用补码,可以将符号位和其他位统一进行处理,同时减法也可以当做加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位时,则进位被舍弃。
其中,正数的补码是它本身,而负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1;
例如:求-5的补码。
-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)
所以-5的补码是11111011。
1.3 算数运算符不多说(+、-、*、/、%)
1.4 逻辑运算符(只对布尔类型进行操作并返回布尔类型数据)
&&/& —— 与
|| / | —— 或
! —— 非
Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false。
&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式;&则两个表达式都执行。
&可以用作位运算符,当&两边的表达式不是Boolean类型的时候,&表示按位操作。
1 2 3 4 boolean b1 = 1<0 && 1/0==0; boolean b2 = 1<0 & 1/0==0; 然后输出,会发现第一个1<0得到false不看后面的条件了 而第二个语句 在判断前面为假了以后 后面也会进行判断 但是后面是一个除0错误,所以会报错
表达式的类型转换:
原则:
(1)占用字节较少的数据类型转换成字节数较多的数据类型;
(2)字符类型会转换成int类型;
(3)int类型会转换成float类型;
(4)若表达式中其中一个类型为double,另一个操作数也会转double;
(5)布尔类型不能转换为其它类型;
1 2 3 4 5 6 7 8 9 10 public static void main(String[] args) { char ch = 'b'; short a = -2; int b = 3; float f = 5.3f; double d = 6.28; System.out.print("(ch/a)-(d/f)-(a+b) = "); System.out.println((ch/a)-(d/f)-(a+b)); } //输出 (ch/a)-(d/f)-(a+b) = -51.18490561773532
3.1 &和&&以及||和|的关系
3.2 递增递减运算符
++1 1++ –1 1–;
3.3 位运算
小技巧:任何数与0000 0001进行或运算后,第一位将变成1;
任何数与1111 1110进行与运算后,第一位将变成0;
一个三目运算符的简单操作
1 2 3 4 5 6 7 //一个三目运算符的简单操作 public class ex { public static void main(String[] args) { boolean ret = ((12345679*9)>97654321*3)?true:false; System.out.println(ret); } }
②生成一个随机字母
1 2 3 4 5 6 7 8 public static void main(String[] args) { double rand = Math.random(); //值为[0,1)的随机数 System.out.println(rand); char c1 = (char)(97+(int)(Math.random()*26)); char c2 = (char)(65+(int)(Math.random()*26)); System.out.println("小写字母:"+c1); System.out.println("大写字母:"+c2); }
③随机生成一个小写字母并转换为大写
1 2 3 4 5 6 public static void main(String[] args) { int num = 97+(int)(Math.random()*26); char ch = (num>=97&&num<=122)?(char)(num-32):' '; System.out.println("转换前:"+(char)num); System.out.println("转换后:"+ch); }