路上难免会有许多挫折,你要学会应对,要坚不可摧
????????????????????????????????????????????????????????????????——24.1.12
1.概述:在代码的运行过程中,值都不会发生改变的数据
2.分类:
? ? ? ? 整数常量:所有整数,包含正负
? ? ? ? 小数常量:所有带小数点的
? ? ? ? 字符常量:带单引号的 ' ',单引号中必须有且只能有一个内容
? ? ? ? 字符串常量:带双引号的 " ",双引号中内容随意
? ? ? ? 布尔常量:true(真)? false(假)? ?->? 不能加双引号
? ? ? ? 空常量:null? ? ? ? 代表的是数据不存在
1.变量的数据类型介绍
2.变量的定义
3.变量的使用
4.标识符
1.变量的数据类型:
????????基本数据类型:四类八种
????????? ? ? ? 整型:byte、short、int、long
? ? ? ? ????????浮点型:float、double
????????????????字符型:char
? ? ? ? ????????布尔型:boolean
? ? ? ? 引用数据类型:类、数组、接口、枚举、注解
①概述:在代码的运行过程中,值会随着不同的情况而随时发生改变的数据
②作用:一次接受一个数据
? ? ? ? 将来定义一个变量,接受一个值,后续可能会根据不同的情况对此值进行修改,此时可以使用变量
③定义:
? ? ? ? a、数据类型? 变量名? =? 值
? ? ? ? ? ? ? ? eg、int a = 10;
? ? ? ? b、数据类型 变量名;
? ? ? ? ? ? ? 变量名 = 值;
? ? ? ? ? ? ? ? eg、int a;
? ? ? ? ? ? ? ? ? ? ? ? a = 10;
? ? ? ? c、连续定义三个相同类型的变量
? ? ? ? ? ? ? ? 数据类型 变量名1,变量名2,变量名3;
? ? ? ? ? ? ? ? 变量名1 = 值;变量名2 = 值;变量名3 = 值;
? ? ? ? ? ? ? ? ? ? ? ? eg、int i,j,k;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? i =?10;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? j = 20;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? k = 30;
? ? ? ? ? ? ? ? 数据类型 变量名1 = 值,变量名2 = 值,变量名3 = 值;
? ? ? ? ? ? ? ? eg、int i=10,j = 20,k = 30;
正确读法:先看等号右边,再看等号左边,将等号右边的数据赋值给等号左边的变量,哪怕等号右边有运算,我们都得先将等号右边的运算算出一个值来,最后赋值给等号左边的变量
④注意:
? ? ? ? a.字符串不属于基本数据类型,属于引用类型,用string表示
? ? ? ? ? ?string是一个类,只不过字符串在定义的时候可以和基本数据类型格式一样
byte num1 = 100;
System.out.println(num1);
//100
short num2 = 1000;
num2 = 1001;
System.out.println(num2);
//1001
int num3 = 10000;
num3 = 1;
System.out.println(num3);
//1
long num4 = 10L;
System.out.println(num4);
//10
float num5 = 2.5F;
System.out.println(num5);
//2.5
double num6 = 2.5;
System.out.println(num6);
//2.5
char num7 = 'A';
System.out.println(num7);
//A
boolean num8 = true;
boolean num9 = false;
num8 = num9;
System.out.println(num8);
//false
//String 是一个引用数据类型,属于类的一种,但是定义和基本类型一致
String name = "王菲";
System.out.println(name);
//王菲e
int num1 = 10;
int num2 = 3;
int sum = num1 + num2;
int sub = num1 - num2;
int mul = num1 * num2;
System.out.println(sum);
//13
System.out.println(sub);
//7
System.out.println(mul);
//30
转义字符:\
简单理解:将普通字符转成有特殊含义的字符
? ? ? ? ? ? ? ? ? 将有特殊含义的字符转化为普通字符????????????????
????????例如:n:普通字符? ? ? ? t:普通字符
? ? ? ? ? ? ? ? ? ?\n:换行符? ? ? ? ? ?\t:制表符,就是tab键
①float的小数位只有23位二进制,能表示的最大十进制为2的23次方(8388608),是7位数,所以float型代表的小数,小数位能表示7位
②double型小数位只有52位二进制,能表示的最大十进制位(4 503 599 627 370 496),是16位数,所以double型代表的小数,小数位能表示16位
③切记:开发不要用float或double直接参与运算,因为直接参与运算会有值不准的问题
①变量不初始化(第一次赋值),不能直接使用
②在同一个作用域(大括号)中,一个变量只能定义一次,不能重复定义
③不同作用域中的数据,尽量不要随意互相访问,在小作用域中可以直接访问大作用域中的变量,在大作用域中不可以直接访问小作用域中的变量
1.概述:给类,方法,变量取的名字
2.注意:
? ? ? ? a.硬性规定(必须遵守)
? ? ? ? ? ?标识符可以包含”英文字母“,”数字“,”_“和”$“
? ? ? ? ? ? 标识符不能以数字开头? ? ? ? int i1 = 100(√),int 1i = 100(×)
? ? ? ? ? ? 标识符不能是关键字? ? ? ? int static = 100(×)
? ? ? ? b.软性建议(最好遵守)
? ? ? ? ? ? 给类取名字:遵循大驼峰式 -> 每个单词的首字母大写
? ? ? ? ? ? 给方法和变量取名字:遵循小驼峰式 -> 从第二个单词开始往后首字母大写
? ? ? ? ? ? 取名字见名知意
1.什么时候会发生类型转换?
? ? ? ? a、等号左右两边类型不一致
? ? ? ? b、不同类型的数据做运算
2.分类:
? ? ? ? a、自动类型转换
? ? ? ? ? ? ? 将取值范围小的数据类型赋值给取值范围大的数据类型->小自动转大
? ? ? ? ? ? ? 取值范围小的数据类型和取值范围大的数据类型数据做运算 -> 小自动转大
? ? ? ? b、强制类型转换
? ? ? ?? ? ? ?当将取值范围大的数据类型赋值给取值范围小的数据类型 -> 需要强转
3.基本类型中取值范围从小到大排序:
? ? ? ? byte、short、char -> int -> long -> float -> double
①将取值范围小的数据类型赋值给取值范围大的数据类型->小自动转大
②取值范围小的数据类型和取值范围大的数据类型数据做运算 -> 小自动转大
//将取值范围小的int类型套到取值范围大的类型long中,发生了自动类型转换
long num1 = 100;
System.out.println(num1);
int i = 10;
double b = 2.5;
//double = int + double
//double = double + double
//int自动提升为了double,发生了自动类型转换
double sum = i + b;
System.out.println(sum);
①当将取值范围大的数据类型赋值给取值范围小的数据类型 -> 需要强转
②如何强转:
? ? ? ? 取值范围大的数据类型 变量名 = (取值范围小的数据类型)取值范围小的数据类型数据
①不要随意写成强转的形式,会有精度损失问题和数据溢出现象,除非没有办法
②byte和short定义的时候,如果等号右边是常量,如果不超过byte和short的范围,不需要我们自己强转,jvm会自动转型,超过范围需要我们手动强转
③如果byte,short等号右边有变量参与,byte与short自动提升为int,然后结果再次赋值给byte或者short的变量,需要我们自己手动强转
④char类型数据如果参与运算,会自动提升为int类型,如果char类型的字符提升为int类型会去ASCII码表(美国标准交换代码)范围内去查询字符对应的int值,如果在ASCII码表范围内没有对应的int值,则会去unicode(万国码)码表中寻找
byte b = 10;
System.out.println(b);
b = (byte)(b + 1);
System.out.println(b);
char c = 'A';
System.out.println(c+0);
当超出范围时