第三章 变量(P035-P062)¶
1、变量的介绍¶
-
变量的三个基本要素¶
类型+名称+值
2、程序中 + 号的使用¶
- 两边都是数值型时,进行加法运算
- 一边为字符串时,进行拼接运算
3、数据类型¶
-
Java数据类型¶
基本数据类型¶
数值型¶
- 整数类型,存放整数
类 字节 范围
byte[字节] 1 -128~127
short[短整型] 2 -32768~32767 (-215 - 215-1)
int[整型] 4 -2147483648~2147483647 (-231 - 231-1)
long[长整型] 8 -263~263-1
- 浮点(小数)类型
float[单精度] 4
double[双精度] 8
说明:
- 关于浮点数在机器中存放形式的简单说明,浮点数 = 符号位 + 指数位 + 尾数位
- 尾数部分可能丢失,造成精度损失(小数都是近似值)
字符型(char[2]),存放单个字符 'a'
布尔型(boolean[1]),存放true,false
- 引用数据类型
- 类(class)
- 接口(interface)
- 数组[]
1、整形的使用细节¶
Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证Java程序的可移植性
Java的整型常量(具体值)默认为int型,声名long型常量须后加 ’l’ 或 ‘L’
例:int a = 3;
int b = 3l;(错误)
long b = 3l;(正确)
Java程序中变量常声名为int型,除非不足以表示大数,才使用long
bit:计算机中最小的存储单位,byte:计算机中基本存储单元,1 byte = 8 bit.
2、浮点数细节¶
与整数 1,2相似。
浮点数使用陷阱
- 2.7 和 8.1 / 3 比较
double num1 = 2.7; ---输出---> 2.7
double num2 = 8.1 / 3; ---输出--->2.66666667(一个接近2.7的一个小数而不是2.7
当我们==对运算结果==是小数的进行相等判断时,要小心
判断时,应该是以两个数的差值的绝对值,在某个精度范围内判断
例: Math.abs(num1) - (num2) < 0.000001
-
Java API 文档¶
API (Application Programming Interface,应用程序编程接口) 是 Java 提供的基本编程接口 (Java提供的类还有相关方法)。中文在线文档:https://www.matools.com
java语言提供了大量的基础类,因此 Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里面包含的方法。
Java类的组织形式
3、字符类型(char)¶
字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放一个汉字),多个字符我们用字符串String。
说明:字符类型可以直接存放一个数字。(对照ASCII码输出
-
字符类型使用细节¶
字符常量是用 ( ' ' )括起来的单个字符。
Java中还允许使用转义字符 '\' 来将其后的字符转变为特殊字符型常量。
在Java中,char的 本质是一个整数,在输出时,是Unicode码对应的字符。
要输出对应的数字时要 (int) 转换为 int 类型。
https://tool.chinaz.com/tools/unicode.aspx
- char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码
ASCII 编码表 一个字节表示,一个128个字符,实际上一个字节可以表示256个字符,只用了128个
4、布尔类型:boolean¶
-
基本介绍¶
布尔类型也叫boolean类型,boolean类型数据只允许取值 true 和 false ,无 null .
boolean 类型只占 1 个字节
适用于逻辑运算
if 条件控制语句
while 循环控制语句
do - while 循环控制语句
for 循环控制语句
-
使用细节¶
不可以用 0 或 非0 的整数替代 false 和 true,这点和C语言不同
4、基本数据类型转换¶
自动转换:当Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型。
数据类型按精度(容量)大小排序为:
char ----> int ----> long ----> float ----> double
byte ----> short ----> int ----> long ----> float ----> double
1、自动类型转换注意和细节¶
有多种类型的数据混合运算时,系统首先自动将所有数据转换成当中容量最大的那种数据类型,然后进行计算。
当我们把精度(容量)最大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
( byte,short) 和 char 之间不会相互自动转换
byte,short,char 它们三者可以计算,在计算时首先转换为 int 类型。
不管是某种单独还是混合,都会转为 int 类型。
boolean 不参与转换
自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。
2、强制类型转换¶
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符( ),但可能造成精度降低或溢出,==格外要注意 ==。
1.细节说明¶
当进行数据的大小从 大--->小,就需要使用到强制转换
强制符号只针对与最近的操作数有效,往往会使用小括号提升优先级
char 类型可以保存 int 的常量值,但不能保存 int 的变量值,需要强转
int m = 100 ; char c3 = (char)m;
- byte 和 short 类型在进行运算时,当作int类型处理。
3、基本数据类型和String类型的转换¶
- 基本数据类型===》String
int n1 = 100; float f1 = 1.1f; double d1 = 4.5; boolean b1 = true; String s1 = n1 + " "; String s2 = f1 + " "; String s3 = d1 + " "; String s4 = b1 + " ";
- String -> 对应的基本数据类型
使用 基本数据类型对应的包装类的相应方法,得到基本数据类型
String s5 = "123"; int num1 = Integer.parseInt(s5); double num2 = Double.parseDouble(s5); float num3 = Float.parseFloat(s5); long num4 = Long.parseLong(s5); byte num5 = Byte.parseByte(s5); boolean num6 = Boolean.parseBoolean(s5); short num7 = Short.parseShort(s5); //字符类型char System.out.println(s5.charAt(0));
- 注意事项
- 在将String 类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如 我们可以把“123”,转成一个整数,但是不能把“hello”转成一个整数。
- 如果格式不正确,就会抛出异常,程序就会终止,这个问题在异常处理章节中,会处理
