数据类型:
- 数据类型分为基本数据类型和引用数据类型
- 基本数据类型:
①逻辑类型:boolean(1个字节)
②整数类型:byte(1个字节,- 2^7 ~ 2^7 - 1)、short(2个字节,- 2^15 ~ 2^15 - 1)、int(4个字节,- 2^31 ~ 2^31 - 1)、long(8个字节,- 2^63 ~ 2^63 - 1)
③字符类型:char(2个字节,0 ~ 2^16 - 1)
【char不一定是2个字节,和我们选用的字符编码有关】
(1)"ISO-8859-1"编码:一个中文字符或英文字符都只有1个字节。
(2)"UTF-8"、"GB2312"、"GBK"编码:一个英文字符都是只有1个字节。一个中文字符,"UTF-8"是3个字节,而"GBK"和"GB2312"是2个字节。
(3)"unicode"编码:一个中文字符或英文字符都是2个字节。
④浮点类型:float(4个字节,8位有效数字)、double(8个字节,16位有效数字)
- long型变量要后缀l或L,float型变量要后缀f或F,double型变量后缀d或D可省略。
- 不可定义无符号的整数类型(unsigned int m)。
- 基本数据类型的包装类:
包装类 | 创建对象 | 对象调用返回类型数据 |
Byte类 | Byte(byte num) | byteValue() |
Short类 | Short(short num) | shortValue() |
Integer类 | Integer(int num) | intValue() |
Long类 | Long(long num) | longValue() |
Float类 | Float(float num) | floatValue() |
Double类 | Double(double num) | doubleValue() |
Character类 | Character(char num) | charValue() |
- 字符常量单引号、双引号、反斜线前要加转义字符常量"\"。
- 数据类型之间的转换:【这里以int和Integer对象为例,其他整数类型和浮点类型一样】
(1)int→Integer对象:
①Integer.valueOf(int);
(2)Integer对象→基本数据类型(整数型和浮点型):
①Integer对象.byteValue();
②Integer对象.shortValue();
③Integer对象.intValue();
④Integer对象.longValue();
⑤Integer对象.floatValue();
⑥Integer对象.doubleValue();
(3)int、Integer对象→String
①Integer.toString(int或Integer对象);
②String.valueOf(int或Integer对象);
③int或Integer对象 + " " 做并置转换
④Integer对象.toString();
(4)String→int
①Integer.parseInt(String s);
②new Integer(String s).intValue();
- 基本数据类型转换的精度排列(由低到高):byte short char int long float double。【隐式转换和强制转换】
-
数据类型转换题目: 第一题: byte b1 = 3, b2 = 4, b; b = b1 + b2; //错误 因为他们最终是要转向int类型,而int类型的值不能赋值给byte b = 3 + 4; //正确 因为他们都是常量,具有常量类型优化机制,可以直接识别为byte 哪句是编译失败的呢?为什么呢? 第二题: byte by = 130; //有问题 因为这个数超出了byte的取值范围,要用byte类型进行强制转换,结果是-126 有没有问题?有问题如何解决?结果是多少呢? 第三题: byte b = 10; b++; //正确 b = b + 1; //失败 因为在和一个int类型的常量进行相加的时候b自动转换成int类型,而一个int类型的数据是没办法直接赋值给byte类型的变量的 哪句是编译失败的呢?为什么呢? 第四题: short s = 1; s = s + 1; //有问题 因为short类型的字节数比int小,但是1是int类型,在表达式进行运算的时候就把其值提升为int类型了,而int类型不能直接赋值给short类型的变量,可以通过强制数据类型转换来解决 有没有问题?如果有怎么解决? 第五题: short s = 1; s += 1; //没有问题 因为使用的是扩展赋值运算符,这样的话就会实现自动强制数据类型转换 有没有问题?如果有怎么解决? 第六题: int x = 4; int y = (--x)+(x--)+(x*10); System.out.println("x = " + x + ",y = " + y); //x = 2,y = 26 看程序说结果?
- 引用数据类型:类、接口、数组、枚举。
- 标识符由数字、字母、下划线(_)和美元符号($)组成,且第一个字符不能是数字。
- true、false和null不能作为标识符,也不是关键字。
- switch(byte、short、char、int)语句:关键字break和continue使用。
- length、length()、size()的区别:
length属性:用于获取数组长度。
length()方法:用于获取字符串长度。
size()方法:用于获取泛型集合有多少个元素。
运算符:
- && 和 & 、|| 和 | 的区别:
(1)&& 和 &
&& 和 & 都是表示与的逻辑运算符,但 && 具有短路功能:当第一个表达式的值为false时,第二个表达式不再执行。而 & 两个表达式都执行。
【当 & 两边的表达式不是boolean类型时,& 是表示按位与的位运算符】
(2)|| 和 |
|| 和 | 都是表示或的逻辑运算符,但 || 具有短路功能:当第一个表达式的值为true时,第二个表达式不再执行。而 | 两个表达式都执行。
【当 | 两边的表达式不是boolean类型时,| 是表示按位或的位运算符】
- 位运算符:
①按位与&:1&1=1,否则为0。
②按位或|:0|0=0,否则为1。
③按位非~:相反。
④按位异或^:相同为0,不同为1。
数组:
- 数组引用相同就具有相同元素。
- System.out.println(数组名)输出数组的引用。若为char型数组则输出全部元素,若要输出char型数组的引用则需要与字符串做并置处理,如:""+数组名。
- 对象数组创建后,要将数组元素进行对象的创建。
Arrays类:【数组工具类】
- 常用方法:
1.static void sort(Object[] a)
对指定数组中的元素进行排序(从小到大)
2.static int binarySearch(Object[] a, Object key)
使用二分查找法来查找指定的数组,返回元素值出现位置,没有返回-1
3.static String toString(Object[] a)
返回指定数组元素内容的字符串形式,如:[1, 3, 5, 7, 9]
4.static <T> List<T> asList(T... a)
将数组转换成list集合【转换后的list是java.util.Arrays.ArrayList类型的,不能增加和删除元素】
来源:https://www.cnblogs.com/rongbin/p/9353152.html