目录
一、输出机制
1.print和println的差别
2.可接收不同类型参数
3.输出函数中 + 符号的使用
二、数据类型
1.整型类型
2.浮点类型
3.字符类型
三、基本数据类型转换
1.自动类型转换
2.强制类型转换
3.练习题
四、基本数据类型和String类型的转换
1.基本类型转String类型
2.String类型转基本类型
一、输出机制
1.print和println的差别
将接收到的内容转化为成字符串形式输出,输出方式不会换行。
System.out.print();
将接收到的内容转化为成字符串形式输出,输出方式自动换行。
System.out.println();
2.可接收不同类型参数
类似C++的cout内置对象,Java也使用了重载的方式来接受不同类型的参数,例如字符串、整数、浮点数等。当调用System.out.println()函数是,Java会根据传递的参数类型自动选择合适的函数版本。
代码如下:
public class test {
public static void main(String[] args) {
int i = 10;
System.out.println(i);// 接收整型
String message = "Hello World!\n";// 接收字符串类型
System.out.println(message);
}
}
输出结果:
10
Hello World!
3.输出函数中 + 符号的使用
将数字转换为字符串形式然后输出
System.out.println(100 + 98); // 198
System.out.println("100" + 98);// 10098
System.out.println(100 + 3 + "hello");// 103hello
System.out.println("hello" + 100 + 3);// hello1003
二、数据类型
Java没有显式指针,Java中的引用类型是一种特殊的数据类型,它存储了一个对象的地址,而不是对象本身。因此,Java中的引用类型可以看作是指向对象的指针 。与C++不同的是,Java中的引用类型不能进行指针运算,也不能直接访问对象的内存地址。
1.整型类型
类型 | 占用存储空间 | 范围 |
---|---|---|
byte [字节] | 1字节 | -128 ~ 127 |
short [短整型] | 2字节 | -(2^15) ~ 2^15 - 1 |
int [整型] | 4字节 | -(2^31) ~ 231 - 1 |
long [长整型] | 8字节 | -2^63 ~ 2^63 - 1 |
2.浮点类型
类型 | 占用存储空间 | 范围 |
---|---|---|
float [单精度浮点数] | 4字节 | -3.403E38 ~ 3.403E38 |
double [双精度浮点数] | 8字节 | -1.798E308 ~ 1.798E308 |
注意:
1.Java 的浮点型常量(具体值)默认为double型,声明float型常量,须后加 'f' 或 'F' 。
2.浮点型常量有两种表示形式
十进制数形式:如:5.12 512.0f .512(必须有小数点)
科学计数法形式:如: 5.12e2 [5.12*10的2次方] 5.12E-2 [5.12*10的-2次方]
3.通常情况下,应该使用double型,因为它比float型更精确。
[举例说明]double num9 = 1234567851;
float num10 = 2.1234567851F;
4.浮点数使用陷阱: 2.7 和 8.1 / 3 比较
double num7 = 2.7; double num8 = 8.1 / 3; if(Math.abs(num7 - num8) < 0.00001) { System.out.println("相等~~"); }
tip: 8.1 / 3 是接近 2.7 的一个小数,而不是 2.7
3.字符类型
Java 的 char 类型和 C++ 的 char 类型之间的差异:
大小:Java 中的 char 类型是 16 位无符号整数,而 C++ 中的 char 类型通常是 8位有符号整数(尽管它的确被定义为一个字节)。
范围:Java 中的 char 类型可以表示从 '\u0000' 到 '\uffff' 的 Unicode 字符,而 C++ 中的 char 类型可以表示从 0 到 255 的 ASCII 字符。
字面量:在 Java 中,字符字面量用单引号表示,例如 'a' 或 '\u0061'。在 C++ 中,字符字面量用单引号表示,例如 'a' 或 97(即 ASCII 码)。
Unicode 支持:Java 中的 char 类型可以直接表示 Unicode 字符,而 C++ 中的 char 类型需要使用 Unicode 转义序列(如 '\u0061')来表示 Unicode 字符。
1.可以直接给char赋一个整数,然后输出时,会按照对应的unicode 字符输出。
例如:char c3 = 97; c3输出为字符a
2.Java中还允许使用转义字符“’来将其后的字符转变为特殊字符型常量。
例如: char c3 = '\n';
3.在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。转换工具
4.char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码。
(与C++相同)
【扩展】字符编码表
ASCII
ASCII 编码表 一个字节表示,一个128 个字符,实际上一个字节可以表示256个字符,只用128个。
【ASCII码】ASCII码一共规定了128个字符的编码,只占用了一个字节的后面7位,最前面的1位统一规定为0。
特别提示:一个字节可以表示256个学符,ASCII码只用了128个字符。
【缺点】不能表示所有字符。
Unicode
Unicode 编码表 固定大小的编码 使用两个字节来表示字符,字母和汉字统一都是占用两个字节这样浪费空间。
【好处】一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题。
【缺点】一个英文字母和一个汉字都占用2个字节,这对于存储空间来说是浪费的。
2的16次方是 65536,所以最多编码是65536个字符。编码0-127的字符与ASCII的编码一样
比如:a' 在ASCII码是 0x61,在 unicode码是0x0061,都对应97。因此Unicode码兼容 ASCII码。
utf-8
编码表,大小可变的编码 字母使用1个字节,汉字使用3个字节。
- UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式(改进)
- UTF-8 是一种变长的编码方式。它可以使用 1-6 个字节表示一个符号,根据不同的符号而变化字节长度。
- 使用 大小可变的编码 字母占1个字节,汉字占3个字节3
GBK
可以表示汉字,而且范围广,字母使用1个字节,汉字2个字节。
gb2312
可以表示汉字,gb2312 < gbk。
big5 码(繁体中文,台湾,香港)
三、基本数据类型转换
1.自动类型转换
相等于C++的隐式类型转换(通过临时对象进行)
例如:
int a = 'c';
double d = 80;
【注意】
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
- 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
- (byte, short) 和 char 之间不会相互自动转换。
- byte, short, char他们三者可以计算,在计算时首先转换为int类型。
- boolean不参与转换。
- 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。
2.强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成 精度降低或溢出。
【注意】
1.当进行数据的大小 从 大————>小,就需要使用到强制转换。
2.强转符号只针对于最近的操作数有效,往往使用小括号提升优先级。
3.char类型可以保存 int 的常量值,但不能保存int的变量值,需要强转。
char c1 = 100; // ok int m = 100; // ok char c2 = m; // 错误 char c3 = (char)m; // ok System.out.println(c3); // 100对应的字符
4.byte和short, char 类型在进行运算时,当做int类型处理。
演示如下:
int c = (int)7.98;
System.out.print(c);
输出为:
7
3.练习题
四、基本数据类型和String类型的转换
1.基本类型转String类型
语法:基本类型的值 + " "
演示如下:
//...
int n1 = 100;
float n2 = 1.1f;
double n3 = 3.4;
boolean n4 = true;
String str1 = n1 + " ";
String str2 = n2 + " ";
String str3 = n3 + " ";
String str4 = n4 + " ";
System.out.println(str1 + " " + str2 + " " + str3 + " " + str4);
//...
输出结果:
100 1.1 3.4 true
2.String类型转基本类型
语法:XX.parseXX("基本类型的值");
演示:
int n1 = Integer.parseInt("123");
double n2 = Double.parseDouble("123.1");
float n3 = Float.parseFloat("123.45");
short n4 = Short.parseShort("12");
long n5 = Long.parseLong("12345");
boolean n6 = Boolean.parseBoolean("true");
Byte n7 = Byte.parseByte("12");