Java数据类型

目录

1.数据类型的分类和所占字节数

 2.变量和类型的概念

2.1整型变量

2.2长整型变量 

2.3双精度浮点型 

 2.4单精度浮点型

2.5字符型变量 

2.6字节型变量 

2.7短整型变量 

2.8布尔类型 

2.9字符串类型变量 

3.转义字符 

4.字符串的拼接

5.变量

5.1变量的作用域 

 5.2变量的分类(部分内容以后学)

 5.3变量的命名规则

 6.常量

6.1.字面值常量

6.2final 关键字修饰的常量

7.理解类型转换

8.理解数值提升

9.int 和 String 之间的相互转换(用到部分包装类的知识)


1.数据类型的分类和所占字节数

Java的基本数据类型如图

(整型  不是 整形 ,图片中的字不对)

所占字节数和包装类如下图

基本数据类型所占字节数包装类(先记住以后学)
byte1Byte
short2Short
int4Integer
long8Long
char2Character
float4Float
double8        Double
booleam1个字节或比特位,没有明确规定Booleam
String(不是基本类型)4String

 2.变量和类型的概念

 变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据 

类型则是对变量的种类进行了划分 , 不同的类型的变量具有不同的特性。

2.1整型变量

语法格式和实例

语法格式: int  变量名  = 初始值;
 
代码示例: int num = 10;  //定义一个整型变量
           System.out.println(num); 

注意事项

1. int 表示变量的类型是一个整型
2. 变量名是变量的标识 . 后续都是通过这个名字来使用变量
3. Java = 表示赋值 ( 和数学不一样 ), 意思是给变量设置一个初始值 .
4. 初始化操作是可选的 , 但是建议创建变量的时候都显式初始化 .
5. 最后不要忘记分号 , 否则会编译失败 .
6. // 表示注释 . 注释作为代码的解释说明部分 , 不参与编译运行 .
7.在 Java , 一个 int 变量占 4 个字节 . 和操作系统没有直接关系 .(证明Java可移植性强)

int的数据范围

-2^31——2^31-1

int占4个字节,共32个比特位,第一位为符号位,剩下31位为数值位 

使用以下代码查看 Java 中的整型数据范围 :
System.out.println(Integer.MAX_VALUE);  // int 的最大值
System.out.println(Integer.MIN_VALUE);  // int 的最小值

2.2长整型变量 

语法格式和实例

语法格式: long  变量名  = 初始值;
 
代码示例: long num = 10L;   定义一个长整型变量, 初始值写作10L或10l (小写的 L, 不是数字1).
           System.out.println(num); 

注意事项

1. 基本语法格式和创建 int 变量基本一致 , 只是把类型修改成 long
2. 初始化设定的值为 10L , 表示一个长整型的数字 . 10l 也可以 .
3. 使用 10 初始化也可以 , 10 的类型是 int, 10L 的类型是 long, 使用 10 L 或者 10 l 更好一些
4.Java中没用longlong类型。

long的数据范围

-2^63——2^63-1

long占8个字节,共64个比特位,第一位为符号位,剩下63位为数值位 

使用以下代码查看 Java 中的整型数据范围 :
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);

2.3双精度浮点型 

 语法格式和实例

语法格式: double  变量名  = 初始值;
 
代码示例: double num = 10.0;  
          System.out.println(num); 

 注意事项

1.

int a = 1;
int b = 2;
System.out.println(a / b);
// 执行结果
0
Java , int 除以 int 的值仍然是 int( 会直接舍弃小数部分 ).
如果想得到 0.5, 需要使用 double 类型计算,如下
double a = 1.0;
double b = 2.0;
System.out.println(a / b);
// 执行结果
0.5

即想要得到小数,初始化时就要用小数

2.

double num = 1.1;
System.out.println(num * num)
    
// 执行结果
1.2100000000000002
Java 中的 double 虽然也是 8 个字节 , 但是浮点数的内存布局和整数差别很大 , 不能单纯的用 2 ^ n 的形式表示数据范 围.
Java double 类型的内存布局遵守 IEEE 754 标准 ( C 语言一样 ), 尝试使用有限的内存空间表示可能无限的小数 , 势 必会存在一定的精度误差.

 2.4单精度浮点型

 语法格式和实例

语法格式:  float 变量名  = 初始值;
 
代码示例:  floaat num = 10.0f;  //10.0f或者10.0F都可
           System.out.println(num); 

注意事项

float 类型在 Java 中占四个字节 , 同样遵守 IEEE 754 标准 . 由于表示的数据精度范围较小 , 一般在工程上用到浮点数都 优先考虑 double, 不太推荐使用  float

 

2.5字符型变量 

 语法格式和实例

语法格式: char 变量名  = 初始值;
 
代码示例:  char ch = 'A';
           

注意事项

1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值 .
2. 计算机中的字符本质上是一个整数 . C 语言中使用 ASCII 表示字符 , Java 中使用 Unicode 表示字符 . 因此一 个字符占用两个字节, 表示的字符种类更多 , 包括中文 .

2.6字节型变量 

 语法格式和实例

语法格式: byte 变量名  = 初始值;
 
代码示例: byte value = 0;
          System.out.println(value);
           

注意事项

1. 字节类型表示的也是整数 . 只占一个字节 , 表示范围较小 ( - 128 - > +127 )
2. 字节类型和字符类型互不相干

2.7短整型变量 

 语法格式和实例

语法格式: short 变量名  = 初始值;
 
代码示例: short value = 0;
          System.out.println(value);
           

注意事项

1. short 占用 2 个字节 , 表示的数据范围是 - 32768 - > +32767
2. 这个表示范围比较小 , 一般不推荐使用

2.8布尔类型 

 语法格式和实例

语法格式: booleam 变量名  = 初始值;
 
代码示例: booleam value = true;
          System.out.println(value);
           

注意事项

1. boolean 类型的变量只有两种取值 , true 表示真 , false 表示假 .
2. Java boolean 类型和 int 不能相互转换 , 不存在 1 表示 true, 0 表示 false 这样的用法 .
3. boolean 类型有些 JVM 的实现是占 1 个字节 , 有些是占 1 个比特位 , 这个没有明确规定

2.9字符串类型变量 

 

 语法格式和实例

语法格式: String 变量名  = 初始值;
 
代码示例: String name = "xiaoming";
          System.out.println(name);
           

注意事项

1. Java 使用 双引号 + 若干字符 的方式表示字符串字面值 .
2. 和上面的类型不同 , String 不是基本类型 , 而是 引用类型 ( 后面重点解释 ).
3. 字符串中的一些特定的不太方便直接表示的字符需要进行转义 .
4.单引号引起的是字符,如‘A’            双引号引起的是字符串,如“zhangsan”

3.转义字符 

转义字符示例 :
// 创建一个字符串 My name is "张三"
String name = "My name is \"张三\"";
转义字符有很多 , 其中几个比较常见的如下 :
转义字符解释
\n换行
\t水平制表符
\'单引号
\"双引号
\\反斜杠

示例代码

String s1 = "\"bit\"";       //结果为"bit"
String s2 = "\\\\bit\\\\";   //结果为//\\bit\\

4.字符串的拼接

字符串的 + 操作 , 表示字符串拼接 :
String a = "hello"; 
String b = "world"; 
String c = a + b; 
System.out.println(c);
//结果为helloworld
还可以用字符串和整数进行拼接 :
String str = "result = "; 
int a = 10; 
int b = 20; 
String result = str + a + b; 
System.out.println(result); 
// 执行结果
result = 1020
System.out.println("hello"+10+20);//结果为hello1020
System.out.println(10+20+"hello");//结果为30hello
System.out.println("hello"+(10+20);//结果为hello30
System.out.println(10+""+20+"hello");//结果为1020hello
以上代码说明 , 当一个 + 表达式中存在字符串的时候 , 都是执行字符串拼接行为 .
因此我们可以很方便的使用 System.out.println 同时打印多个字符串或数字
int a = 10; 
int b = 20; 
System.out.println("a = " + a + ",b = " + b)

5.变量

5.1变量的作用域 

也就是该变量能生效的范围 , 一般是变量定义所在的代码块 ( 大括号 )
class Test { 
 public static void main(String[] args) { 
 { 
 int x = 10; 
 System.out.println(x); // 编译通过; 
 } 
 System.out.println(x); // 编译失败, 找不到变量 x. 
 } 
}

 5.2变量的分类(部分内容以后学)

 5.3变量的命名规则

硬性指标 :
1. 一个变量名只能包含数字 , 字母 , 下划线
2. 数字不能开头 .
3. 变量名是大小写敏感的 . num Num 是两个不同的变量 .
注意 : 虽然语法上也允许使用中文 / 美元符 ($) 命名变量 , 但是 强烈 不推荐这样做 .
软性指标 :
1. 变量命名要具有描述性 , 见名知意 .(用英文单词)
2. 变量名不宜使用拼音 ( 但是不绝对 ).
3. 变量名的词性推荐使用名词 .
4. 变量命名推荐 小驼峰命名法 , 当一个变量名由多个单词构成的时候 , 除了第一个单词之外 , 其他单词首字母都大 写.
小驼峰命名示例 :
int maxValue = 100; 
String studentName ="张三";

 6.常量

上面讨论的都是各种规则的变量 , 每种类型的变量也对应着一种相同类型的常量 .
常量指的是运行时类型不能发生改变 .
常量主要有以下两种体现形式 :

6.1.字面值常量

10 // int 字面值常量 ( 十进制 )
010 // int 字面值常量 ( 八进制 ) 由数字 0 开头 . 010 也就是十进制的 8
0x10 // int 字面值常量 ( 十六进制 ) 由数字 0x 开头 . 0x10 也就是十进制的 16
10L // long 字面值常量 . 也可以写作 10l ( 小写的 L)
1.0 // double 字面值常量 . 也可以写作 1.0d 或者 1.0D
1.5e2 // double 字面值常量 . 科学计数法表示 . 相当于 1.5 * 10^2
1.0f // float 字面值常量 , 也可以写作 1.0F
true // boolen 字面值常量 , 同样的还有 false
'a' // char 字面值常量 , 单引号中只能有一个字符
"abc" // String 字面值常量 , 双引号中可以有多个字符 .

6.2final 关键字修饰的常量

final int a = 10; 
a = 20; // 编译出错. 提示 无法为最终变量a分配值
常量不能在 程序运行过程中 发生修改 . 建议常量大写,如int SIZE  = 123; 

7.理解类型转换

Java 作为一个强类型编程语言 , 当不同类型之间的变量相互赋值的时候 , 会有教严格的校验 .
先看以下几个代码场景 :
int long/double 相互赋值
int a = 10;
long b = 20;
a = b; // 编译出错, 提示可能会损失精度.
b = a; // 编译通过.
int a = 10;
double b = 1.0;
a = b; // 编译出错, 提示可能会损失精度.
b = a; // 编译通过.
long 表示的范围更大 , 可以将 int 赋值给 long, 但是不能将 long 赋值给 int.
double 表示的范围更大 , 可以将 int 赋值给 double, 但是不能将 double 赋值给 int.
结论 : 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型 , 反之则不行 .
int boolean 相互赋值
int a = 10;
boolean b = true;
b = a; // 编译出错, 提示不兼容的类型
a = b; // 编译出错, 提示不兼容的类型
结论 : int boolean 是毫不相干的两种类型 , 不能相互赋值 .此情况下强制转换也不行
int 字面值常量 给 byte 赋值
byte a = 100; // 编译通过
byte b = 256; // 编译报错, 提示 从int转换到byte可能会有损失
注意 : byte 表示的数据范围是 -128 -> +127, 256 已经超过范围 , 100 还在范围之内 .
结论 : 使用字面值常量赋值的时候 , Java 会自动进行一些检查校验 , 判定赋值是否合理 .
使用强制类型转换
int a = 0;
double b = 10.5;
a = (int)b;
int a = 10;
boolean b = false;
b = (boolean)a; // 编译出错, 提示不兼容的类型.

结论: 使用 (类型) 的方式可以将 double 类型强制转成 int. 但是

1. 强制类型转换可能会导致精度丢失 . 如刚才的例子中 , 赋值之后 , 10.5 就变成 10 , 小数点后面的部分被忽略 .
2. 强制类型转换不是一定能成功 , 互不相干的类型之间无法强转 .
类型转换小结
1. 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型 .
2. 如果需要把范围大的类型赋值给范围小的 , 需要强制类型转换 , 但是 可能精度丢失 .
3. 将一个字面值常量进行赋值的时候 , Java 会自动针对数字范围进行检查 .

8.理解数值提升

int long 混合运算
int a = 10;
long b = 20;
int c = a + b; // 编译出错, 提示将 long 转成 int 会丢失精度
long d = a + b; // 编译通过.
结论 : int long 混合运算的时候 , int 会提升成 long , 得到的结果仍然是 long 类型 , 需要使用 long 类型的变量来
接收结果 . 如果非要用 int 来接收结果 , 就需要使用强制类型转换 .
byte byte 的运算
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
// 编译报错
Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失
byte c = a + b;
           ^
结论 : byte byte 都是相同类型 , 但是出现编译报错 . 原因是 , 虽然 a b 都是 byte, 但是计算 a + b 会先将 a b 都 提升成 int, 再进行计算 , 得到的结果也是 int, 这是赋给 c, 就会出现上述错误 .
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据 . 为了硬件上实现方便 , 诸如 byte short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.
正确的写法 :
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c);
类型提升小结 :
1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算 .

9.int 和 String 之间的相互转换(用到部分包装类的知识)

int 转成 String
int num = 10;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueof(num);
String 转成 int
String str = "100";
int num = Integer.parseInt(str);
 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Java是一种面向对象的程序设计语言,有许多内置的数据类型供开发者使用。这些数据类型可以帮助我们在程序中定义不同类型的变量,并对这些变量进行操作和处理。 Java数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型包括整型、浮点型、字符型和布尔型,用于存储简单的数据值。引用数据类型则是指对象类型,用于存储复杂的数据结构。 在进行Java数据类型实验时,可以通过创建不同类型的变量来演示它们的特性和用法。例如,可以创建一个整型变量来存储一个整数值,使用运算符对其进行加减乘除等运算,并将结果输出到控制台上。 另外,也可以尝试使用浮点型数据类型来储存实数值,对其进行各种算术运算,以及比较大小、取整等操作。字符型数据类型可以用来存储单个字符,例如创建一个字符变量来表示一个字母,使用各种字符相关的方法对其进行处理。 布尔型数据类型则用于存储逻辑值,即真或假。可以通过创建一个布尔变量,并使用逻辑运算符对其进行逻辑判断,以及进行条件语句的控制。 此外,还可以进行引用数据类型的实验,例如创建一个字符串对象,使用字符串类的各种方法对其进行处理。还可以创建一个自定义的类,例如创建一个学生类,定义各种属性和方法,实验对象的创建、属性的访问和方法的调用。 总之,Java数据类型实验可以帮助我们深入了解不同类型的数据在程序中的存储和处理方式,从而更好地应用和扩展Java语言的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值