第三章 变量
1. 变量介绍
为什么需要变量?
变量是程序的基本组成单位
变量有三个基本单位:类型+名称+值
//1.定义变量int age =20;double score=88.6;char gender='男';String name='jack';
变量使用注意事项
- 变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同,比如:int 4r个字节,double 就是 8个字节]
- 该区域有自己的名称[变量名]和类型[数据类型]
- 变量必须先声明,后使用,即有顺序
- 该区域的数据可以在同一类型范围内不断变化
- 变量在同一个作用域内不能重名
- 变量=变量名+值+数据类型,这一点请大家注意。变量三要素
2. +号的使用
3. 数据类型🚩
int-4 byte-1 short-2 long-8
float-4 double-8
char-2 boolean-1
String不属于基本数据类型
面试题:浮点数是右什么组成的?
浮点数=符号位+指数位+尾数位
通常情况下,应该使用double型,因为它比float型更精确。
public class IntDetail{public static void main(String[] args){//浮点数使用陷阱:2.7和8.1/3 比较double num11=2.7;double num12=8.1/3;//2.7System.out.println(num11);//2.7System.out.println(num12);//2.6999999999999997if(num11==num12){System.out.println("相等");}//正确写法if (Math.abs(num11-num12)<0.000001){System.out.println("差值非常小,到规定的精度,认为相等");}}
}
得到一个重要的使用点:当我们对运算结果是小数的进行相等判断时,要小心❗❗❗
应该是以两个数的差值的绝对值,在某个精度范围类判断。❗❗❗
细节:如果是直接查询得到的小数或者直接赋值,是可以判断相等。
public class IntDetail{public static void main(String[] args){char c4=97;System.out.println(c4);//结果:a}
}
单引号引起来的是字符,双引号是字符串❗
在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。
char c4=97;char c5='a';System.out.println(c4);//结果:aSystem.out.println((int)c5);//结果:a
面试题:ASCII编码表一共有多少字符?
一共有128个字符,由一个字节表示,实际上一个字节可以表示256个字符,只用了128个。
Unicode编码表,字母和汉字统一都用两个字节表示。
使用细节说❗❗❗
不可以0或非0的整数替代false和true,这点和C语言不同。
4. 编码
5. 数据类型转换
√ 介绍
当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型
这个就是自动类型转换。
√ 数据类型按精度(容量)大小排序为(背,规则)
自动类型转换注意和细节:
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
- 当我们把精度(容量)大 的数据类型赋值给精度(容量)小 的数据类型时,就会报错,反之就会进行自动类型转换。
- (byte,short)和 char之间不会相互自动转换。
- byte,short,char 他们三者可以计算,在计算时首先转换为int类型。
- boolean 不参与转换
- 自动提升原则: 表达式结果的类型自动提升为操作数中最大的类型。
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。
使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。
int n1=(int)1.9;int n2=2000;byte b1=(byte)n2;System.out.println("n1=" + n1);//结果:1(造成精度损失)System.out.println("b1=" + b1);//结果:-48(造成数据溢出)
练习
答案:
1)可以 / 错误(int–>short)
2)可以 / 不可以(int–>byte) / 可以
3)可以 / 可以 / 可以
4)可以 / 可以 / 不可以(int–>short)
//基本数据类型->Stringint 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+"";System.out.println(s1+" "+s2+" "+s3+" "+s4);//String->基本数据类型String s5="123";Double num1=Double.parseDouble(s5);Float num2=Float.parseFloat(s5);Long num3=Long.parseLong(s5);Byte num4=Byte.parseByte(s5);int num5=Integer.parseInt(s5);boolean b=Boolean.parseBoolean("true");short num6=Short.parseShort(s5);System.out.println("================");System.out.println(num1);//123.0System.out.println(num2);//123.0System.out.println(num3);//123System.out.println(num4);//123System.out.println(num5);//123System.out.println(num6);//123System.out.println(b);//true//怎么把字符串转成字符char ->含义是指把字符串的第一个字符得到System.out.println("================");System.out.println(s5.charAt(0));//1
6. 作业
答案:
30
8
char c1='\n';char c2='\t';char c3='\r';char c4='\\';char c5='1';char c6='2';char c7='3';System.out.println(c1);System.out.println(c2);System.out.println(c3);System.out.println(c4);System.out.println(c5);System.out.println(c6);System.out.println(c7);
String book1="天亮";String book2="江湖";System.out.println(book1+book2);char c1='男';char c2='女';System.out.println(c1+c2);double price1=123.56;double price2=100.11;System.out.println(price1+price2);
答案:
天亮江湖
52906
223.67000000000002
String name="jack";int age=20;double score=90.8;char gender='男';String hobby="打篮球";System.out.println("姓名\t年龄\t成绩\t性别\t爱好\n"+name+'\t'+age+'\t'+score+'\t'+gender+'\t'+hobby);
输出: