数据类型
一、标识符
1.1.什么是标识符(biao zhi fu)?
包,类,变量,方法.....等等,只要是起名字的地方,那个名字就是标识符
1.2.标识符定义规则:
- 四个可以(组成部分):数字,字母,下划线_,美元符号$,注意:字母概念比较宽泛,指的是英文字母,汉字,日语,俄语......,但是我们一般起名字尽量使用英文字母
- 两个不可以:不可以以数字开头,不可以使用java中的关键字
- 见名知意:增加可读性
- 大小写敏感: int a ; int A;
- 遵照驼峰命名:
- 类名:首字母大写,其余遵循驼峰命名
-
方法名,变量名:首字母小写,其余遵循驼峰命名
- 包名:全部小写,不遵循驼峰命名
-
长度无限制,但是不建议太长 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasfd
二、关键字
关键字:被JAVA语言赋予了特殊含义,用作专门用途的单词
特点:JAVA中所有关键字都为小写
官网:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html


三、变量和常量
3.1.字面常量
常量分为两种:
常量通常指的是一个固定的值,例如:1、2、3、’a’、’b’、true、false、”helloWorld”等。
在Java语言中,主要是利用关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。
为了区分和表述,一般将1、2、3、’a’、’b’、true、false、”helloWorld”等称为字面常量,而使用final修饰的PI等称为符号常量(字符常量)。
字面常量的类型:
- 整型常量:123 33
- 实型常量:3.1415926
- 字符常量:'a'
- 逻辑常量:true false
- 字符串常量: hello
注意:逻辑常量就两个值,一个是true,一个是false
3.2.变量
变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。
java中所占的字节数
- boolen,8位1个字节
- int,32位,4个字节
- float,32位 4个字节
- double,64位8个字节
- char 16位,2个字节
- byte 8位1个字节
- short 16位 2个字节
- long 64位 8个字节
3.2.1.变量声明格式:
数据类型 变量名 =[初始值]
案例:
public class Demo01 { //定义常量 public static final int REGION=6; //这是主方法main public static void main(String[] args) { int number = 4396; System.out.println(number); } }
3.2.2.变量的声明的时候需要注意:
如果你只定义一个变量,没有给变量进行赋值的话,那么其实这个变量相当于没有定义:
变量如果没有进行赋值的话,那么使用的时候会出错,告诉你:尚未初始化变量:
变量的值可以更改:
变量不可以重复定义:
3.2.3.变量对于内存的使用
变量对于内存,只占用内存中的一块空间

3.2.4.变量的作用域
变量的作用域:
- 作用域指的就是作用范围,变量在什么范围中有效
- 作用范围就是离它最近的{}
局部变量:定义在方法中
成员变量:定义在类中,方法外
package com.augus; /** * @author : Augus * @date: 2023/5/5/16:09 * @Description: com.augus * @version: 1.0 */ public class Demo02 { int b = 20; public static void main(String[] args){ System.out.println(a);//no int a = 10; System.out.println(a);//yes System.out.println(b);//yes { int c = 40; System.out.println(c);//yes int a = 50;//属于变量的重复定义 } System.out.println(c);//no } public void Hi(){ System.out.println(b);//yes System.out.println(a);//no int a = 30;//不是变量的重复定义 System.out.println(a);//yes } }
四、基本数据类型
4.1.整数类型变量
整型数据类型:

比如:byte的右侧表数范围127怎么算出来的?
byte: 1字节=8位 ,127用二进制表示为:01111111
1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127
案例如下:
package com.augus; /** * @author : Augus * @date: 2023/5/5/16:09 * @Description: com.augus * @version: 1.0 */ public class Demo02 { int b = 20; public static void main(String[] args){ int number1 = 100;//默认就是十进制的情况 System.out.println(number1); int number2 = 0100; //前面加上0,这个值就是八进制 System.out.println(number2); int number3 = 0x100; //前面加上0x就是十六进制 System.out.println(number3); int number4 = 0B100; //前面加上0x或者0B,这个值就是二进制的 System.out.println(number4); Long number5 = 1233123123123L; System.out.println(number5); //定义byte类型的变量 byte b = 126; System.out.println(b); //注意超出范围的赋值会报错 short s = 32761; System.out.println(s); int i = 321234; System.out.println(i); //整数类型,默认就是int类型的,如果定义的数据超过了int的范围,就会报错 //把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了 //注意:只有这个数超出int类型的范围了后面才需要加上L,否则无需加L也可以赋值给long类型: long l = 12345678910L; System.out.println(l); } }
4.2.浮点类型
4.2.1.浮点类型常量
(1).十进制数形式,例如:
3.14 314.0 0.314
(2).科学记数法形式,如
314e2(31400.0) 314E2 (E的大小写没有区分,31400.1) 314E-2(3.14) double f = 314e2; //314*10^2-->31400.0 double f2 = 314e-2; //314*10^(-2)-->3.14
4.2.2.浮点类型常量
float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
浮点型数据类型表数范围

案例代码:
package com.augus; /** * @author : Augus * @date: 2023/5/6 14:24 * @Description: com.augus * @version: 1.0 */ public class Demo04 { //这是主方法main public static void main(String[] args) { //浮点数的常量有两种表示方法 //1.十进制 double num1 = 3.14; System.out.println(num1); //2.科学计数法形式 double num2 = 314E-3; System.out.println(num2); //浮点类型的变量 //浮点型默认是double类型的,要想将数值赋值给float类型,必须在后面添加F或者f float f1 = 3.1412345657890F; System.out.println(f1); //double类型后面可以加D或者d,但是一般都是省略不写 double d1 = 5.12313221D; System.out.println(d1); //一般不要进行浮点类型的比较 float f2 = 3.14F; double d2 = 3.14; double d3 = 3.14; /* = 赋值运算将等号右侧的值赋给等号左侧 == 判断左右两侧的值是否相等,结果要么相等 要么不相等,返回true或者false */ System.out.println(d2==d3); } }
4.3.字符类型
char数据类型是16位无符号Java基元数据类型。 它表示Unicode字符。请注意,char是无符号数据类型。 因此,char变量不能为负值。字符数据类型的范围为0到65535,这与Unicode集的范围相同。
1、JAVA中,char占2字节,16位。可在存放汉字
2、char赋值
- char a='a'; //任意单个字符,加单引号。
- char a='中';//任意单个中文字,加单引号。
- char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。
注意:
- char只能放单个字符。
- char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。
- 在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。
package com.augus; /** * @author : Augus * @date: 2023/5/6 14:35 * @Description: com.augus * @version: 1.0 */ public class Demo05 { //这是主方法main public static void main(String[] args) { //定义字符 char ch1, ch2; ch1 = 88; // code for X ch2 = 'Y'; System.out.println("ch1 and ch2: "); System.out.println(ch1 + " " + ch2); } }
4.4.布尔类型
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制 。
package com.augus; /** * @author : Augus * @date: 2023/5/6 14:38 * @Description: com.augus * @version: 1.0 */ public class Demo06 { //这是主方法main public static void main(String[] args) { //创建一个布尔类型的变量 boolean f1 = true; System.out.println(f1); boolean f2 = false; System.out.println(f2); boolean f3 = 4==6; System.out.println(f3); } }
4.5.基本数据类型的转换
package com.augus; /** * @author : Augus * @date: 2023/5/6 14:44 * @Description: com.augus * @version: 1.0 */ public class Demo07 { //这是主方法main public static void main(String[] args) { //类型转换的两种形式 double d = 3; //int转换为double,自动完成 int i = (int) 3.14; //强制类型转换 double转换为int //同一个表达式中,有多个数据类型的时候进行运算,整数类型、浮点类型、字符类型都可以,唯独布尔类型不可以 double d1 = 1 + 123L + 8.5+'a'; System.out.println(d1); //对于byte,short,char类型来说,只要在他们的表数范围中,赋值的时候就不需要进行强转了直接赋值即可。 long l = 123; System.out.println(l); byte b = (byte) 121313123; System.out.println(b); } }
4.5.案例练习
求圆周率和圆面积
package com.augus; import java.util.Scanner; /** * @author : Augus * @date: 2023/5/6 15:04 * @Description: com.augus * @version: 1.0 */ public class Demo08 { //这是主方法main public static void main(String[] args) { //一个变量被final修饰,这个变量就变成了一个常量,这个常量的值就不可变了,这个常量就是我们所说的 字符常量,例如圆周率pi final double PI = 3.14; //创建扫描器 Scanner scanner = new Scanner(System.in); //输出一个提示 System.out.println("请录入一个半径:"); //让扫描器获取键盘录入的int的类型的数据, 作为半径使用 int r = scanner.nextInt(); //求周长 double c = 2 * PI * r; System.out.println("圆的周长为:"+c); //求圆的面积 double s = PI*r*r; System.out.println("圆的面积:"+s); } }

浙公网安备 33010602011771号