首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【Javase】数据类型与变量

  • 25-03-07 23:22
  • 2757
  • 10767
blog.csdn.net

前言

在初识Java后,本篇将进一步介绍Java的基础知识。

【Javase】初识Java-CSDN博客

在本篇中,将着重介绍java中的数据类型与变量相关知识。

目录

一.数据类型

1.基本数据类型

2.引用数据类型

二.常量

1.概念

2.语法

3.整型变量

1)整型变量(int)

2)长整型变量(long)

3)短整型变量

4)字节型变量

4.浮点型变量

1)双精度浮点型(double)

2)单精度浮点型(float)

5.字符型类型

6.布尔型变量 

7.字符串类型

1)int类型转换为String类型

三.类型转换与类型提升

1.类型转换

2.类型提升


一.数据类型

在 Java 中数据类型主要分为两类: 基本数据类型 和 引用数据类型 。
基本数据类型有4类8种

1.基本数据类型

1)整型:字节型(byte),短整型(short),整型(int),长整型(long)。

2)浮点型:  单精度浮点数(float),双精度浮点数(double)。

3)字符类型:  字符型(char)。

4)  布尔类型:  布尔型(boolean)。

注意:

  • 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
  • 整形和浮点型都是带有符号的
  • 整型默认为int型,浮点型默认为double
  • 字符串属于引用类型。

2.引用数据类型

引用数据类型包括:数组,类,接口,字符串(String)

此内容后面介绍

二.常量

1.概念

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在 Java 程序中,称为变量 。 而数据类型就是用来定义不同种类变量的 。

2.语法

定义变量的语法格式为:数据类型  变量名 = 初始值 ;
例如:
  1. public class Test {
  2. public static void main(String[] args) {
  3. int a=10; // a是变量,a中的值是可以修改的
  4. byte b=12;
  5. short c=14;
  6. long d =16L; //L表示该常量为long类型,一般可省略
  7. System.out.println("a");
  8. System.out.println("b");
  9. System.out.println("c");
  10. System.out.println("d");
  11. }
  12. }

3.整型变量

1)整型变量(int)

        int a=10;

无论多少位系统中,int都占用4个字节。

变量在使用之前必须要赋初值,否则会编译报错

如果没用合适的初值,可以设置为0。

int的包装类为Integer,利用包装类,可以获得数据类型的表示范围,如同:

设置初值时,需要在范围内,否则会发生溢出。

2)长整型变量(long)

  1. long a=10086;
  2. long b=10086L;

定义长整型变量时,可以在末尾加上L表示该类型为长整型,也可以省略。

长整型的包装类为Long

长整型变量无论在哪个系统下都占用8字节

3)短整型变量

  1. short a=10;
  2. //short表示的范围
  3. System.out.println(Short.MAX_VALUE);
  4. System.out.println(Short.MIN_VALUE);

短整型无论在哪个系统环境下都是占2个字节,使用时注意不要超过范围。

短整型的包装类为Short

4)字节型变量

  1. byte b=10;
  2. //byte表示的范围
  3. System.out.println(Byte.MAX_VALUE);
  4. System.out.println(Byte.MIN_VALUE);

字节型变量无论在哪个系统上都占用1个字节

字节型的包装类为Byte。

4.浮点型变量

当我们使用除法运算时,试想一下,整型类型的3除以2,结果能得到1.5吗。

运行程序得到结果为0.

在 Java 中 , int 除以 int 的值仍然是 int( 会直接舍弃小数部分 ) 。如果想得到 0.5, 需要使用 double 类型计算 .

1)双精度浮点型(double)

注意事项:

  • double类型在任何系统上都占8个字节
  • 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算
  • double的包装类为Double
  • double 类型的内存布局遵守 IEEE 754 标准 ( 和 C 语言一样 ), 尝试使用有限的内存空间表示可能无限的小数 , 势 必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。例如:

我们会下意识认为 1.1*1.1=1.21。

程序结果却为:

2)单精度浮点型(float)

   float num = 1.0f; // 写作 1.0F 也可以
float 类型在 Java 中占四个字节 , 同样遵守 IEEE 754 标准 . 由于表示的数据精度范围较小 , 一般在工程上用到浮点数都优先考虑 double, 不太推荐使用 float.
float 的包装类型为Float.

5.字符型类型

  1. char c1='a';
  2. char c2='2'; //char类型可以存放整型
  3. System.out.println(c1);
  4. System.out.println(c2);
Java 中使用 单引号 + 单个字母 的形式表示字符字面值。
计算机中的字符本质上是一个整数 . 在 C 语言中使用 ASCII 表示字符 , 而 Java 中使用 Unicode 表示字符 . 因此 一个字符占用两个字节, 表示的字符种类更多 , 包括中文。
char的包装类为Character。

6.布尔型变量 

布尔类型常用来表示真假,在现实生活中也是经常出现的,比如:听说xxx 同学买彩票中了一个亿 ... ,听到后估计大部分人第一反应就是:我x ,真的假的?

“真的假的”,若是真的则是true,假的则是false。

  1. boolean b = true;
  2. System.out.println(b);
  3. b = false;
  4. System.out.println(b);
注意事项:
  • boolean 类型的变量只有两种取值, true 表示真, false 表示假。
  • Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法。
  • boolean的包装类型为Boolean。

7.字符串类型

在Java中使用String类定义字符串类型,例如:

  1. String s1 = "hello";
  2. String s2 = " world";
  3. System.out.println(s1);
  4. System.out.println(s2);
  5. System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接

在有些情况下,需要将字符串和整形数字之间进行转换:

1)int类型转换为String类型

  1. int num = 10;
  2. // 方法1
  3. String str1 = num + "";
  4. // 方法2
  5. String str2 = String.valueOf(num);
2)String类型转换为int类型
  1. String str = "100";
  2. int num = Integer.parseInt(str);

注意:String类型转int类型需要合法的数字字符串,若混着字母等符合字符,则会编译失败。

三.类型转换与类型提升

1.类型转换

Java 作为一个强类型编程语言 , 当不同类型之间的变量相互赋值的时候 , 会有教严格的校验。
  1. int a = 10;
  2. long b = 100L;
  3. b = a; // 可以通过编译
  4. a = b; // 编译失败
因a为int型,占4个字节,b为long型,占8个字节,小转大能成功,大转小失败。
当给b赋值a,则可以通过。此时为自动类型转换。
当给a赋值b,编译失败,此时若要转换,需要强制类型转换
在 Java 中,当参与运算数据类型不一致时,就会进行类型转换。 Java 中类型转换主要分为两类:自动类型转换 ( 隐式) 和 强制类型转换 ( 显式 ) 。

自动类型转换

自动类型转换即: 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。
特点:数据范围小的转为数据范围大的时会自动进行 。
强制类型转换
强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。
特点:数据范围大的到数据范围小的。
注意事项:
  • 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型
  • 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失
  • 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
  • 强制类型转换不一定能成功,不相干的类型不能互相转换

2.类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
1)  int 与 long 之间: int 会被提升为 long
  1. int a=10;
  2. long b=5;
  3. int num1 = a+b; //编译出错,因为a+b结果提升为了long类型,不能用int类型接受
  4. long num2 = a+b;
2)  byte 与 byte 的运算
  1. byte a = 10;
  2. byte b = 20;
  3. byte c =a + b; //编译出错,因为byte与byte运算会提升成int类型。

byte 和 byte 都是相同类型 , 但是出现编译报错 . 原因是 , 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算 , 得到的结果也是 int, 这是赋给 c, 就会出现上述错误。
正确的写法为:
  1. byte a = 10;
  2. byte b = 20;
  3. byte c = (byte)(a + b);
  4. System.out.println(c);
【 类型提升小结 : 】
1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算

以上便是全部内容,如有不对,欢迎指正。

注:本文转载自blog.csdn.net的yc_xym的文章"https://blog.csdn.net/yc_xym/article/details/145671700"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top