变量
变量介绍
为什么需要变量:
一个程序就是一个世界,我们可以用不同类型的变量来代表不同的对应的数据从而形成程序的世界。
变量是程序的基本组成单位
不论使用哪一种语言,变量都是程序的基本组成单位。
变量有三个要素(类型+名称+值)
class Test{
public static void main(String[] args){
int a=1;
int b=3;
b=89;
System.out.println(a);
System.out.println(b);
}
}
变量概念
变量相当于内存中一个数据存储空间的表示,可以把变量看作是一个房间的门牌号,
通过门牌号走到房间,而通过变量名可以访问到变量(值)。
变(变化)量(值)
变量的使用步骤
不同变量的定义
int age = 30;//整数
double score = 88.9;// 浮点数
char gender = '男';//单个字符
String name = "King";//字符串
变量使用的注意细节
- 变量表示内存的一个存储区域{不同的变量,类型不同,占用的空间大小不同,比如: int 4个字节 double 8个字节}
- 该区域有自己的名称[变量名]和类型[数据类型]
- 变量必须先声明,后使用
- 该区域的数据可以在同一类型范围内不断变化 (变量类型之间不能混用)
- 变量在同一个作用域不能重名
- 变量=变量名+值+数据类型
+号的使用
数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)
java数据类型分为两大类:基本数据类型和引用类型
基本数据类型有八种:数值型{byte short int long float double}字符型{char}布尔型{boolean}
引用数据类型有四种:类 接口 数组
整数类型
-
java各个整数类型有固定的范围和字段长度,不受OS影响以保证java可移植性。 -
java的整型常量(具体值)默认为int类型 声明long类型需后面加”l“或者‘L’ -
int n1=1;//四个字节
int n2=1L;//前者为int 后者为long 8个字节
long n3 = 1L;//将其转变为long 类型
-
java程序中常量声明为int类型,除非不足以表示大数,才使用long -
bit:计算机中最小的存储单位, -
byte:计算机中基本储存单元 1byte=8bit
浮点类型
- 浮点数在机器中存放形式 ,浮点数=符号位+指数位+尾数位
- 尾数部分可能丢失,造成精度损失(小数都是近似值)
浮点类型使用细节:
-
与整数类型相似,JAVA浮点类型也有固定的范围和字段长度,不受OS影响 -
Java浮点型常量默认为double型,声明float常量必须后面加‘f‘或者’F’ -
float num1=1.1; //num 为float格式四个字节 1.1为默认double八个字节错误
float num2=1.1F;//1.1类型是float
-
浮点类型常量有两种表示方式:
- 十进制:5.12 512.0f .521
- 科学计数法: 5.12e2[5.12*10的2次方] 5.12E-2[5.12除以10的2次方]
-
通常情况下使用double类型,因为他比float更精确 double num9=2.12345647851;
float num9=2.1234567851F;
>>2.12345647851
2.1234567
-
当我们对运算结果是小数进行相等判断时要小心
double num11 = 2.7;
double num12 = 8.1/3; //2.7
System.out.println(num11);
System.out.println(num12);//接近2.7 计算机理解为8.1/3.000000....
>>2.7
>>2.6999999999999997
if(num11==num12){
System.out.println("===");
}
// 不会输出
应该是两个数的差值的绝对值,在某个精度范围内判断
if(Math.abs(num11-num12)<0.000001){//其中引用了 math类的绝对值 abs
System.out.println("===")
}
JAVA API(应用程序编程接口)文档
Java 8 中文版 - 在线API中文手册 - 码工具 (matools.com)
java类的组织形式:
如何使用:
基本介绍
字符类型可以表示单个字符,字符类型时char,char是两个字节(存放汉字),多个字符我们用字符串String
public class char01{
public static void main(String[] args){
char c1='a';//字符的本质是存放的汉字
char c2='\t';
char c3='雨';
char c4=97;//字符类型可以直接存放数字 当输出C4时会输出97表示的字符
>>
a
雨
a
字符细节
- 字符常量是用单引号(’‘)括起来的单个字符:char c1=’a‘ 双音号是字符串
- Java中还允许使用转义字符 “\” 将其后面的字符转变为特殊字符型常量。例如:char c3 =’\n‘;
- 在java中,char的本质是一个整数,在输出时,时unicode对应的字符
- 可以直接给char赋一个整数,输出时会对照对应的unicode字符输出
- char类型可以进行运算,相当于一个整数,因为它有对应的unicode码
//在java中,char的本质是一个整数,在输出时,时unicode对应的字符
char c1=97;
char c2='a';//输出 ’a'的数字
System.out.println(c1);
System.out.println((int)c2);//97 将a 转为int
char c3='雨';
char c4=38632;
System.out.println((int)c3);//38632
System.out.println(c4);//38632
//char类型可以进行运算,相当于一个整数,因为它有对应的unicode码
System.out.println('a'+10);//先将a转为97再+10
//课堂测试
char c5='b'+1;
System.out.println((int)c5); //输出99
System.out.println(c5);//输出C 对应ASCII编码表
字符类型本质讨论
-
字符型存储到计算机中,需要将字符对应的码值(整数)找出来,比如‘a‘ 存储:’a‘==》码值97=》二进制(1100001)=》存储 读取:二进制(1100001)=》97=》’a‘=》显示 -
字符和码值的对应关系是字符编码决定的
布尔类型
基本介绍
-
布尔类型也叫bolean类型,只允许取值true和false,无null -
占一个自己 -
适用于逻辑运算,一般用于程序流程控制
- if条件语句
- while循环控制语句
- do-while循环控制语句
- for循环控制语句
不可以用0或者非0代替false和true 这点和C不同 public class boolean01{
public static void main(String[] args){
//判断成绩是否通过
//定义一个布尔变量
boolean isPass=false;
if(isPass==true){
System.out.println("考试通过,恭喜");
}else{
System.out.println("考试没通过,下次努力");
}
}
}
数据类型转换
自动类型的转换
介绍
? 当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个及时自动类型转换。
数据类型按精度容量大小排序为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bh81rXJ3-1638200489871)(C:\Users\hp\AppData\Roaming\Typora\typora-user-images\image-20211103233506900.png)]
int a = 'c';
double d = 80;
自动类型转换的注意和细节
-
有多种类型的数据混合运算时,系统首先自动将所有数据转换为容量大的那种数据类型,再进行计算 -
当我们把精度(容量)大的数据类型赋值给精度(小)的数据类型时错误,反之就会自动类型转换 -
(byte,short)和char之间不自动转换 -
byte short char 他们三者可以计算,在计算时首先转换为int类型 -
boolean 不参与转换 -
自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
int n1=10;// ok
double d1 = n1+1.1;//后者自动转换为double 前者不能转换为flort 1.1 默认为double
Float d1 = n1+1.1F;//此时1.1是flort,后者为flort
//当我们把精度(容量)大的数据类型赋值给精度(小)的数据类型时错误,反之就会自动类型转换
int n2 = 1.1; //错误 double--》int
double n3 = 1; // 正确 int》double
//(byte,short)和char之间不自动转换
//当把一个数赋值给byte 先判断该数是否是byte范围内,如果是就可以
byte bi = 10; //byte范围 -128到127
int n2 = 1;//int 四个字节
byte b2 = n2; //错 int 转不了byte 如果是按变量赋值判断类型
//
//b
byte b1 = 10;
char c1 = b1;// 错误 byte 不能自动转为char
//byte short char 他们三者可以计算,在计算时首先转换为int类型
byte b2 = 1;
byte b3 = 2;
short s1 = 1;
short s2 = b2 + s1; // 错 b2 + s1 =>int
int s2 = b2 + s1; // 对 b2 + s1 =>int
byte b4 = b2 + b3;//错 三者 参与计算就提升为int 即后者为int
//- boolean 不参与转换
boolean pass = true;
int num100 = pass;//错误boolean 不参与自动转换
//自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
byte b4 = 1;
short s3 = 100;
int num200 = 1;
double num300 = 1.1;
double num500 = b4 + s3 + num200 + num300 //自动提升为double 所以用double接受
强制类型转换
介绍:
? 自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(),但可能造成精度降低或者溢出,格外注意。
int i =(int)1.9;
System.out.println(i);
int j = 2000;
byte b1 =(byte)j;
System.out.println(b1);
强制类型转换细节说明
-
当进行数据的大小是从大–>小,就需要使用强制转换 -
墙砖符号只针对最近的操作有效,往往使用小括号提升优先级 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;
System.out.println(c3);
-
byte和short,char类型在运算时,当作int类型处理
练习:
short s =12;
s = s-9;
byte b = 10;
b = b + 11;
b = (byte)(b+11);
char c = 'a';
int i = 16;
float d =.314F;
double result = c+i+d;
byte b = 16;
short s = 14;
short t = s+b;
基本数据类型和String的转换
介绍
在程序开发中,我们经常需要将数据类型转换为String类型。或者将Steing类型转换为基本数据类型。
基本类型转换为String类型: 语法:将基本类型的值+""即可
int n1 = 100;
float f1 = 1.1F;
boolean b1 = true;
String s1 = f1 + "";
String s2 = n1 + "";
String s3 = b1 + "";
System.out.println(s1 + "" + s2 + "" + s3 );
String类型转换为基本数据类型:
语法:通过基本类型的包装类调用parseXX方法即可
String s5 = '123.0';
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 b = Boolean.parseBoolean("true")
short num6 = Short.parseShort(s5);
System.outprintln(s5.charAt(0));
注意事项:
- 在将String类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如我们把‘123’,转成一个整数,但是不能把‘hello’转成一个整数。
- 如果格式不正确,就会抛出一场,程序就会终止,这个问题在异常处理章节中,会处理。
|