Java常量与变量
1. 常量:
程序运行期间,不可以发生改变的量,叫做常量。
1.1 常量的分类:
1.字符串常量:凡是用双引号引起来的部分,叫做字符串常量。(双引号中可跟多个字符)例如:"abc"、"Hello"、"123"
2.整形常量:直接写上的数字,没有小数点。例如:100、200、0、-150
3.浮点数常量:直接写上的数字,有小数点。例如:2.5、-3.14、0.0
4.字符常量:凡是用单引号引起来的单个字符,就叫做字符常量。(单引号中只能有一个字符)例如:'A'、'b'、'9'、'中'
5.布尔常量:只有量中取值。true、false。
6.空常量:null。代表没有任何数据
1.2 常量的打印输出:
package com.scxh.day01; public class Demo01Conse { public static void main(String[] args) { //字符串常量 System.out.println("ABC"); System.out.println("");//字符串两个双引号中间的内容为空 System.out.println("XYZ"); System.out.println("一"); //整数常量 System.out.println(30); System.out.println(500); //浮点数常量 System.out.println(3.14); System.out.println(-2.5); //字符常量 System.out.println('A'); System.out.println('6'); // System.out.println('');//两个单引号中间必须有且仅有一个字符,没有不行。 // System.out.println('AB');//两个单引号中间必须有且仅有一个字符,有两个也不行。 //布尔常量 System.out.println(true); System.out.println(false); //空常量.空常量不能直接打印输出 // System.out.println(null); } }
2. 变量:
变量:在程序运行期间,内容可以发生改变的量。
创建一个变量并且使用的格式:
数据类型 变量名称; (这就是创建了一个变量)
变量名称 = 数据值;(赋值,将右边的数据值,赋值交给左边的变量)
一步到位的格式:
数据类型 变量名称 = 数据值; (在创建一个变量的同时,立刻放入指定的数据值)
package com.scxh.day01; public class Demo01Conse { public static void main(String[] args) { // 创建一个变量 //格式: 数据类型 变量名称; int num1; // 向变量当中存入一个数据 //格式:变量名称 = 数据值; num1 = 10; //当打印输出变量名称的时候,显示出来的是变量的内容 System.out.println(num1); //打印结果为10 // 改变变量当中本来的数字,变成新的数字 num1 = 20; System.out.println(num1); //改变后的结果为20 //使用一步到位的格式来定义变量 //格式:数据类型 变量名称 = 数据值; int num2 = 25; System.out.println(num2); //打印结果为25 num2 = 35; System.out.println(num2); //改变后的结果为35 System.out.println("================="); byte num3 = 30; //注意:右侧数值的范围不能超过左侧数据类型的取值范围,否则会报错! System.out.println(num3); //打印结果为30 //byte num4 = 400; // 右侧超出了byte数据范围,报红! short nmu5 = 50; System.out.println(nmu5); //50 long num6 = 300000000L;//注意:使用long类型需要加后缀L System.out.println(num6); //300000000 float num7 = 2.5F; //注意:使用float类型也要加后缀F System.out.println(num7); //2.5 double num8 = 1.2; System.out.println(num8); char zifu1 = 'A'; System.out.println(zifu1); // A zifu1 = '中'; System.out.println(zifu1); // 中 boolean var1 = true; System.out.println(var1); // tru1 var1 = false; System.out.println(var1); // false // 将一个变量的数据内容,赋值交给另一个变量 // 右侧的变量名称var1已经存在,里面装的是false布尔值 // 将右侧的变量里面的false值,向左交给var2变量进行存储 boolean var2 = var1; System.out.println(var2); // false } }
变量的注意事项:
1.如果创建多个变量,那么变量之间的名称不可以重复。
2.对于float和long类型来说,字母后缀F和L不要丢掉。
3.如果使用部byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围。
4.没有进行赋值的变量,不能是是直接使用;一定要赋值之后,才能使用。
5.变量使用不能超过作用域的范围。(作用域:从定义变量的一行开始,一直到直接所属的大括号结束为止。)
6.可以通过一个语句来创建多个变量,但是一般情况下,不推荐这么写。
package com.scxh.day01; public class Demo01VariableNotice { public static void main(String[] args) { int num1 = 10; // 创建了一个新的变量,叫num1 // int num1 = 20; // 有创建了一个新的变量,名叫num1,报错! System.out.println(num1); // 10 int num2 = 20; int num3; num3 = 30; System.out.println(num2); // 20 System.out.println(num3); // 30 // System.out.println(num4); //报错! 在创建变量之前不能使用此变量,否则就会报错。 int num4; //定义了一个变量num4,但没有进行赋值 // System.out.println(num4); //报错!由此可见,直接打印没有赋值的变量就会报错。 { int num5 = 500; System.out.println(num5); //500 } // System.out.println(num5); //报错!由此可见,超出了大括号的范围,超出了作用域,变量不能在使用了 System.out.println("========="); // 同时创建了三个全都是int类型的变量 int a, b, c; // 各自分别赋值 a = 10; b = 20; c = 30; System.out.println(a); // 10 System.out.println(b); // 20 System.out.println(c); // 30 //同时创建三个int变量, 并且同时各自赋值 int x = 100, y = 200, z = 300; System.out.println(x); // x System.out.println(y); // y System.out.println(z); // z } }
2. 数据类型
基本数据类型:
整数型 byte short int long
浮点型 float double
字符型 char
布尔型 boolean
引用数据类型:
字符串、数组、类、接口、Lambda
2.1基本数据类型
四类八种数据类型:
JAVA当中的默认数据类型:整数类型是int、浮点数类型是double。
注意事项:
1.字符串不是基本类型,而是引用类型。
2.浮点型可能只是一个近似值,并非精确值。
3.数据范围与字节不一定相关,例如float的数据范围比long更加广泛但是float是四字节,long是八字节。
4.浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。
如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。
2.2 数据类型转换:
当数据类型不一样时,将会发生数据类型转换
自动类型转换(隐式)
1. 特点:代码不需要进行特殊处理,自动完成转换。
2. 规则:数据范围从小到大。
强制类型转换(显式)
1. 特点:代码需要进行特殊的格式处理,不能自动完成。
2. 格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据;
注意事项:
1. 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
2. byte/short/char这三种数据类型都可以发生数学运算,例如加法“+”。
3. byte/short/char这三种数据类型在运算的时候,都会被首先提升称为int类型,然后再计算。
4. Boolean类型不能发生数据转换
package com.scxh.day01; public class Demo01DataType { public static void main(String[]args){ System.out.println(1024); // 这就是一个整数,默认是int类型 System.out.println(3.14); // 这就是一个浮点数,默认是double类型 // 左边是long类型, 右边是默认的int类型,左右不一样 // 一个等号代表赋值,将右侧的int常量, 交给左侧的long变量进行存储 // int --> long, 符合了数据范围从小到大的要求 // 这行代码发生了自动类型转换。 long num1 = 100; System.out.println(num1); // 100 // 左边是double类型,右边是float类型,左右不一样 // float --> double,符合从小到大的规则 // 也发生了自动类型转换 double num2 = 2.5F; System.out.println(num2); // 2.5 // 左边是float类型,右边是long类型,左右不一样 // long --> float,范围是float更大一些,符合从小到大的规则。 // 也发生了自动类型转换 float num3 = 30L; System.out.println(num3); // 30.0 System.out.println("========"); // 左边是int类型,右边是long类型,不一样 // long --> int,不是从小到大 // 不能发生自动转换!需要强制转换! // 格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据; int num = (int) 100L; System.out.println(num); // 100 int num4 = (int)6000000000L; System.out.println(num4); // 结果不会是6000000000,结果为:1705032704,此时发生数据溢出 // double --> int,强制类型转换 int num5 = (int) 3.99; System.out.println(num5); //3,这并不是四舍五入,所有的小数位都会被舍弃掉 char zif1 = 'A'; // 这是一个字符型变量,里面是大写字母A System.out.println(zif1 + 1); // 66, 也就是大写字母A被当作65处理。 // 计算机的底层会用一个数字(二进制)来代表字符A,也就是65 // 一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字 byte num6 = 40; // 注意!右侧的数值大小不能超过左侧的类型范围 byte num7 = 50; // byte + byte --> int + int --> int int result1 = num6 + num7; System.out.println(result1); // 90 short num8 = 60; // byte + short --> int + int --> int // int强制转换为short: 注意必须保证逻辑上真实大小本来就没有超过short范围,否则会发生数据溢出 short result2 = (short) (num6 + num8); System.out.println(result2); // 100 } }
5. ASCII编码对照表
|
|
|
4. 关键字特点:
1.完全小写的单词,
2.在IDEA当中有颜色的都是关键字
5. 标识符软性建议:
1.类名规范:首字母大写,后面每个单词首字母大写。(大驼峰式)例:HelloWorld
2.变量名规范:首字母小写,后面每个单词首字母小写。(小驼峰式)例:helloWorld