【韩老师零基础30天学会Java 】03章 变量
第三章 变量
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.7
System.out.println(num11);//2.7
System.out.println(num12);//2.6999999999999997
if(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);//结果:a
System.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)
//基本数据类型->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+"";
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.0
System.out.println(num2);//123.0
System.out.println(num3);//123
System.out.println(num4);//123
System.out.println(num5);//123
System.out.println(num6);//123
System.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);
输出: