第三章 变量
-
3.1 为什么需要变量
变量是程序的基本组成单位。
变量有三个基本要素(类型+名称+值)
-
3.2 变量的介绍
- 概念:
变量相当于内存种一个数据存储空间的表示
- 变量使用的基础步骤
- 声明变量
int a;
- 赋值
a=60;
也可以一步写
int a = 60;
-
3.3 变量的快速入门
public class Var02{ public static void main(String[] args){ //记录人的信息 int age=30; double score =88.9; char gender ='男'; String name="king"; //输出信息 System.out.println("人的信息如下"); System.out.println(name); System.out.println(age); System.out.println(score); System.out.println(gender); } }
-
3.4 变量使用注意事项
- 变量表示内存种一个存储区域,变量类型不同,占用空间大小不同
- 该区域有自己的名称和类型,该区域的值可以在同一类型范围内不断变化
- 变量必须先申明,后使用
- 变量在同一个作用域内不能重名:在同一个类里不能定义两个重名的变量,但在两个类里可以分别定义两个名称相同的变量
-
3.5 程序中+号的使用
- 左右两边都是数值型时,则做加法运算
- 当左右两边有一方为字符串型,则做拼接运算
- 两个字符相加,得到其字符码值之和
- 运算顺序,从左到右
-
3.6 数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。
String字符串不是基础数据类型,而是类
-
3.7 整数类型
1.整形的分类
-
整形使用细节
-
Java各整数类型有固定的范围和字段长度,不受具体OS的影响
-
Java的整型常量默认为int型,声明long型常量需后加”l“或”L“(不加也行)
int a1 = 1;
long a2=1L;
- Java程序中变量常声明为int型,除非不足以表示大数,才使用long
-
-
-
3.8 浮点类型
-
基本介绍:浮点类型可以表示一个小数
-
浮点型的分类
-
浮点数在机器中存放形式:符号位+指数位+尾数位
-
尾数部分可能丢失,造成精度损失
-
-
浮点型的使用细节
-
Java浮点类型也有固定的范围和字段长度,不受具体OS的影响
-
Java的浮点型常量默认为double型,声明float时需要加‘f’或’F’
float num1= 1.1F;
double num2 = 1.1;
float num3 = 1.1; //错误,不能把内存占用大的double型放进float型中
double num4 = 1.1f; //正确,可以把内存占用小的float型放进double型中
-
-
浮点型常量有两种表示形式
十进制数形式:5.12 512.0f .512 (必须有小数点)
科学计数法形式:5.12e2 5.12E-2
-
通常情况下,应该使用double型,因为它比float型更精确(float型可能丢失尾数部分)
-
浮点数使用陷阱
double num1 = 2.7;//输出得到2.7
double num2 = 8.1/3;//输出得到接近2.7的数
当对两个小数运算结果进行相等判断时,不能直接用=
应该计算两个数的差值的绝对值,然后判断其是否在精度范围内
Math.abs(num1-num2)<0.000001
-
如果是两个直接查询得到的小数,则可以直接进行相等比较
-
-
3.9 Java API 文档
-
API (Application Programming Interface)是Java提供的基本编程接口(类及方法),
https://www.matools.com 以及 资料包
-
Java语言提供了大量的基础类,因此Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法
-
Java类的组织形式
-
若要查看某个类的方法
按:包→类→方法的方式查找
或者直接索引
-
-
3.10 字符类型
-
基本介绍:字符类型可以表示单个字符。多个字符用字符串String表示。
char c1 = ‘a’; char c2=’\t’; char c3=’韩’; char c4=94;
一个字符可以表示一个字母、汉字、转义、数字(编码)
-
使用细节:
a. 字符常量是用单引号括起来的单个字符(双引号表示字符串)
b. Java中允许使用转义字符’\’来将其后的字符转变为特殊字符型常量(’\t’是一个字符)
c. 在java中,char的本质是一个整数,输出时,是unicode码对应的字符。
d. 可以直接给char赋一个整数,输出时,会按照其对应的unicode码输出
e. char类型是可以进行运算的,相当于一个整数
public class CharDetail{ public static void main(String[] args){ //char的本质是一个整数,输出时,是unicode码对应的字符 char c1 = 97; System.out.println(c1); char c2 = 'a'; System.out.println((int)2); //char类型可以运算 System.out.println('a'+10); } }
-
常用字符编码:
a. ASCII :用一个字节表示,一共128个字符(实际上一个字节能表示256个字符,但只使用了其中128个)
b. Unicode:使用两个字节来表示字符,字母和汉字都是占用两个字节
c. utf-8: 大小可变的编码,字母用一个字节,汉字用三个字节
d. gbk: 可以表示汉字,范围更加广泛,字母用一个字节,汉字用两个字节
e. gb2312:可以表示汉字,范围比gbk小
f. big5 : 繁体中字
-
-
3.11 ASCII码
-
3.12 Unicode码
-
3.13 UTF-8编码
-
3.14 布尔类型
- 基本介绍:
a. 布尔类型也叫boolean类型,只允许取值true和false,无null
b. boolean占一个字节
c. boolean类型适于逻辑运算,一般用于程序流程控制
i. if条件控制
ii. while循环控制
iii. do-while循环控制
iv. for循环控制
- 基本介绍:
-
3.15 基本数据类型转换
-
自动类型转换
a. 当java程序在进行赋值或计算时,精度小的类型自动转化为精度大的类型
b. 数据类型按精度大小排序: -
自动类型转换细节
a. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
b. 当我们把精度大的数据类型赋值给精度小的数据类型时,就会报错,反之就会进行自动类型转换
c. (byte, short)和char之间不会相互自动转换
d. byte,short,char三者可以计算,在计算时先转换为int类型
e. boolean类型不参与转换
f. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型public class AutoConvert{ public static void main(String[] args){ //多种类型的数据混合运算,系统首先将所有数据转成容量最大的数据类型 int n1 = 10; double d1 = n1+1.1; float d2 = n1+1.1f; //当把一个具体的数赋给byte时,先判断该数是否在byte范围内,如果是就可以 byte b1 = 10 ; int n2 = 1; byte b2 = n2; //错误 //(byte, short)和char之间不能自动转换 char c1 = b1; //错误,byte不能自动转换成char //byte,short,char三者可以计算,在计算时先转换为int类型 byte b2=1; short s1=1; short s2=b2+s1; //错误,二者相加会转换为int byte b4=b2+b3; //错误,二者相加会转换为int //boolean不参与类型的自动转换 boolean pass=true; int n3=pass; //错误 //表达式结果的类型自动提升为操作数中最大的类型 byte b5=1; short s3=100; int n4=1; double d3=1.1; double d4=b5+s3+n4+d3; } }
-
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(),但可能造成精度降低或溢出
int i = (int)1.9 //1,精度降低 int j =2000; byte m = (byte)j; //-48,溢出
-
强制类型转换细节
-
强转符号只对最近的操作数有效,往往使用小括号提升优先级
int x = (int)10*3.5+6*1.5; //错误 int x = (int)(10*3.5+6*1.5);//正确
-
char类型可以保存int的常量值,但不能保存int的变量值,需要强转
char c1 = 100; int m = 100; char c2 = m;//错误 char c3=(char)m;
-
-
-
3.16 基本数据类型转换-练习题
-
3.17 基本数据类型和String类型的转换
-
基本数据类型转String
语法:将基本类型的值+””int n1 = 100; float f1 = 1.1F; boolean b1 = true; String s1 = n1+""; String s2 = f1+""; String s3 = b1+"";
-
String转基本数据类型
语法:通过基本类型的包装类的相应方法进行转换String s5 = "123"; int num1 = Interger.parseint(s5); double num2 = Double.parseDouble(s5); long num3 = Long.parseLong(s5); byte num4 = Byte.parseByte(s5); float num5 = Float.parseFloat(s5); short num6 = Short.parseShort(s5); boolean b = Boolean.parseBoolean("true");
-
String转字符
字符串转字符时,取字符串的第x个字符String s5 = "123"; char c1 = s5.charAt(0); //取第0个字符
-
转换注意事项
a. 在将String类型转成基本数据类型时,要确保String类型能够转成有效的数据
b. 如果格式不正确,就会抛出异常,程序就会终止(异常处理章节)
-