JAVA的数据类型与变量

news2024/11/19 15:24:21

目录

1. 字面常量

2. 数据类型

3. 变量 

 3.2 长整型变量

3.3 短整型变量 

3.4 字节型变量

3.5双精度浮点型

3.6 单精度浮点型  

3.7字符型变量

 3.8布尔型变量

4.类型转换 

4.1自动类型转换(隐式)

4.2强制类型转换(显式)

 5.字符串类型


1. 字面常量

字面常量的分类:
1. 字符串常量:由 "" 括起来的,比如 “12345678” “hello word” 你好
2. 整形常量:程序中直接写的数字 ( 注意没有小数点 ) ,比如: 123 100
3. 浮点数常量:程序中直接写的小数,比如: 3.14 0.49
4. 字符常量:由 单引号 括起来的当个字符,比如:‘a’、 ‘1’
5. 布尔常量:只有两种 true false
6. 空常量: null

注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。  

2. 数据类型

Java 中数据类型主要分为两类: 基本数据类型 引用数据类型
基本数据类型有四类八种:
1. 四类:整型、浮点型、字符型以及布尔型
2. 八种:
数据类型
关键字
内存占用
内存占用
字节型
byte
1 字节
-128 ~ 127
短整型
short
2 字节
-32768 ~ 32767
整型
int
4 字节
-2^32~2^31-1
长整型
long
8 字节
-2^63~2^63-1
单精度浮点数
float
4 字节
有范围,一般不关注
双精度浮点数
double
8 字节
有范围,一般不关注
字符型
char
2 字节
0 ~ 65535
布尔型
boolean
没有明确规定
true false
注意:
(1)不论是在 16 位系统还是 32 位系统, int 都占用 4 个字节, long 都占 8 个字节
(2)整形和浮点型都是带有符号的
(3)整型默认为 int 型,浮点型默认为 double

 3.包装类

包装类指的是,基本数据类型对应的类类型。因为基本数据类型无法进行对象化处理,所以就引入了包装类。

8种基本数据byte、short、int、long、 float、double、char、boolean。除了int对应的是Integer,char对应的是Character。其余都是首字母大写即可。

3. 变量 

定义变量的语法格式为:
数据类型 变量名 = 初始值 ;

3.1 整型变量

举例:

在定义时给出初始值
int a = 10 ;
System . Out . println ( a );
在定义时没有给初始值,但使用前必须设置初值
int b ;
b = 10 ;
System . Out . println ( b );  
注意事项:
1. int 不论在何种系统下都是 4 个字节
2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为 0
3. 在给变量设置初始值时,值不能超过 int 的表示范围,否则会导致溢出
4. 变量在使用之前必须要赋初值,否则编译报错
5. int 的包装类型为 Integer

对于注意3细说:

不只是int,在java中,当你赋值字面常量值时,一旦超过变量能储存的最大值时,是会自动编译报错的。

但这种情况不会报错,但会溢出。

 

 

 3.2 长整型变量

举例
long a=100;
long b=100L;
System.out.println(a);
System.out.println(b);

基本数据类型a与b无区别,在变量能储存的范围内,低精度到高精度会自动转化。

但包装类数值后必须加L\l,不然报错。

注意事项:
1. 长整型变量的初始值后加 L 或者 l ,推荐加 L(如:10l容易被看成101)。
2. 长整型不论在那个系统下都占 8 个字节。

3.3 短整型变量 

short a = 10 ;
System . Out . println ( a );
// short 型变量所能表示的范围:
System . Out . println ( Short . MIN_VALUE );
System . Out . println ( Short . MAX_VALUE );

 

注意事项:
1. short 在任何系统下都占 2 个字节
2. short 的包装类型为 Short

3.4 字节型变量

举例:
byte a=127;
System.out.println(a);

注意事项:

1. byte 在任何系统下都占 1 个字节
2. 字节的包装类型为 Byte

 byte和short会存在整形提升。

如:

 因为整形提升,编译器会吧a,b会被当作整形类型变量,但在编译的过程中并不知道a,b的大小,存在超出范围的风险,故编译器会认为这是安全隐患,所以报错。

改正:
byte c= (byte) (a+b);
结论: byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误。

3.5双精度浮点型

举例:
double d = 3.14 ;
System . Out . println ( d );
(1)试着做一下这个问题
int a = 1 ;
int b = 2 ;
System . out . println ( a / b ); // 输出 0.5 吗?
原因: 在 Java , int 除以 int 的值仍然是 int( 会直接舍弃小数部分 )
如果想得到 0.5, 需要使用 double 类型计算 .
(2)再着做一下这个问题
double a=1.1;
System.out.println(a*a);// 输出 1.21 吗?

并不是

原因:无论是float,double都不是精确的,只能精确到小数后几位。

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

3.6 单精度浮点型  

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

3.7字符型变量

 举例:

char c1 = 'A' ; // 大写字母
char c2 = '1' ; // 数字字符
System . out . println ( c1 );
System . out . println ( c2 );
// 注意:
java 中的字符可以存放整形
char c3 = ' ' ;
System . out . println ( c3 );
注意事项 :
1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值 .
2. 计算机中的字符本质上是一个整数 . C 语言中使用 ASCII 表示字符 , Java 中使用 Unicode 表示字符 . 因此 一个字符占用两个字节, 表示的字符种类更多 , 包括中文 .

 3.8布尔型变量

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

4.类型转换 

Java 作为一个强类型编程语言 , 当不同类型之间的变量相互赋值的时候 , 会有教严格的校验 .
Java 中,当参与运算数据类型不一致时,就会进行类型转换。 Java 中类型转换主要分为两类:自动类型转换 ( 隐 式) 和 强制类型转换 ( 显式 )

4.1自动类型转换(隐式)

自动类型转换即: 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。特点: 数据范围小的转为数 据范围大的时会自动进行 。(低精度变高精度)
(1)
int a = 100 ;
long b = 10L ;
b = a ; // a b 都是整形, a 的范围小, b 的范围大,当将 a 赋值给 b 时,编译器会自动将 a 提升为 long 类型,然后赋值
a = b ; // 编译报错, long 的范围比 int 范围大,会有数据丢失,不安全
(2)
flfloat f = 3.14F ;
double d = 5.12 ;
d = f ; // 编译器会将 f 转换为 double ,然后进行赋值
f = d ; // double 表示数据范围大,直接将 flfloat 交给 double 会有数据丢失,不安全

4.2强制类型转换(显式)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。(高精度变低精度)
(1)
int a = 10 ;
long b = 100L ;
b = a ; // int-->long ,数据范围由小到大,隐式转换
a = ( int ) b ; // long-->int, 数据范围由大到小,需要强转,否则编译失败
(2)
float f = 3.14F ;
double d = 5.12 ;
d = f ; // flfloat-->double ,数据范围由小到大,隐式转换
f = ( float ) d ; // double-->flfloat, 数据范围由大到小,需要强转,否则编译失败
注意事项:
1. 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型
2. 如果需要把范围大的类型赋值给范围小的 , 需要强制类型转换 , 但是 可能精度丢失
3. 将一个字面值常量进行赋值的时候 , Java 会自动针对数字范围进行检查
4. 强制类型转换不一定能成功,不相干的类型不能互相转换
类型提升小结 :
1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算 .

 5.字符串类型

举例:

public static void main ( String [] args ) {
String s1 = "hello" ;
String s2 = " world" ;
System . out . println ( s1 );
System . out . println ( s2 );
System . out . println ( s1 + s2 ); // s1+s2 表示:将 s1 s2 进行拼接
}

试着做一下这个问题

(1)String s1 = "hello";以什么结尾?‘\0’?

答:无结尾标准符。

(2)

int a=10;
int b=20;
System.out.println("a+b="+a+b);
System.out.println("a+b="+(a+b));
System.out.println(a+b+"=a+b");

小结:整形在前 那就默认是整形  要是字符串在前 后面的整形也被默认成字符串了。

以上为我个人的小分享,如有问题,欢迎讨论!!!  

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/791075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习之梯度下降算法

0.1 学习视频源于:b站:刘二大人《PyTorch深度学习实践》 0.2 本章内容为自主学习总结内容,若有错误欢迎指正! 1 线性模型 1.1 通过简单的线性模型来举例: 1.2 如图,简单的一个权重的线性模型&#xff0c…

透明屏的应用范围广吗?

透明屏是一种新型的显示技术,它可以使屏幕显示的内容透明,让用户可以同时看到屏幕上的图像和背后的物体。 透明屏的应用领域非常广泛,可以用于商业广告、展览展示、智能家居等多个领域。 透明屏的原理是利用透明材料和光学技术,…

通过el-tab切换Echarts图表显示不全问题

一、背景 在让日常开发中很多时候会通过el-tab选项卡方式去分类统计数据,本文我们主要是针对统计中用到了echarts图表,在刚接触时可能会遇到默认选项卡可以正常显示图表数据,但是切换选项卡以后会出现图表大小出现问题,当然原因就…

第2集丨webpack 江湖 —— 创建一个简单的webpack工程demo

目录 一、创建webpack工程1.1 新建 webpack工程目录1.2 项目初始化1.3 新建src目录和文件1.4 安装jQuery1.5 安装webpack1.6 配置webpack1.6.1 创建配置文件:webpack.config.js1.6.2 配置dev脚本1.7 运行dev脚本 1.8 查看效果1.9 附件1.9.1 package.json1.9.2 webpa…

MyBatisPlus之DML编程控制

MyBatisPlus之DML编程控制 1. id生成策略控制(Insert)1.1 id生成策略控制(TableId注解)1.2 全局策略配置id生成策略全局配置表名前缀全局配置 2. 多记录操作(批量Delete/Select)2.1 按照主键删除多条记录2.…

【java实习评审】对小说更新时间点的并发压力的短链接接口实现比较到位

大家好,本篇文章分享一下【校招VIP】免费商业项目“推推”第一期书籍详情模块java同学的代码周最佳作品。该同学来自西安邮电大学通信工程专业。本项目亮点难点:1 热门书籍在更新点的访问压力,2 书籍更新通知的及时性和有效性,3 书…

GlobalProtect-点击连接按钮无响应

GlobalProtect-点击连接按钮无响应 解决方案 重启PanGPS服务 点击连接

C++输入字符串函数cin.getline()

1.函数作用 接受一个字符串,可以接收空格并输出。 2.函数的完整形式 cin.getline(字符数组名,字符个数,结束标志) 第三个参数可以省略,当第三个参数省略之后,系统默认为’\0’。 若指定参数“字符个数”为n,则利用cout函数输出…

LiveGBS流媒体平台GB/T28181常见问题-TOKEN有效期是多久如何设置token有效期StreamToken和URLToken

LiveGBS中TOKEN有效期是多久如何设置token有效期StreamToken和URLToken 1、获取TOKEN2、TOKEN有效期3、默认token有效期3、自定义token加密key3.1、token_key3.2、stream_token_key 4、如何配置一直有效的token4.1、URLToken4.2、StreamToken 5、动态有效期6、流地址鉴权开启后…

《微SaaS创富周刊》第9期:如何把创业者访谈,变成年收入100万+美元的生意

导读 大家好!第9期《微SaaS创富周刊》面世啦(点击这里阅读第1期),感谢大家的关注和阅读!本周刊面向独立开发者、早期创业团队,报道他们主要的产品形态——微SaaS如何变现的最新资讯和经验分享等。所谓微Sa…

Pytorch学习笔记1:张量+训练参数传入与处理+制作训练集

文章目录 Pytorch中张量的一些常见函数最基础也最常见的方法关于Indexing, Slicing, Joining, Mutating Ops(索引、切片、聚合、旋转)随机种子torch.bernoulli(input)torch.normaltorch.rand(size)torch.randn(size)torch.randperm(n) Python--argparse-…

vue3自定义指令 vue中常用自定义指令

文章目录 vue3自定义指令1.什么是自定义指令&#xff1f;2.注册自定义指令2.1 全局注册2.2 局部注册<script setup>中注册&#xff1a;<script>中使用&#xff1a; 3.钩子函数参数详解4.指令传值5.总结 常用自定义指令案例v-longpressv-debounce vue3自定义指令 除…

智能财务分析-亿发财务报表管理系统,赋能中小企业财务数字化转型

对于许多中小企业来说&#xff0c;企业重要部门往往是财务和业务部门。业务负责创收&#xff0c;财务负责控制成本&#xff0c;降低税收风险。但因管理机制和公司运行制度的原因&#xff0c;中小企业往往面临着业务与财务割裂的问题&#xff0c;财务数据不清晰&#xff0c;无法…

2023年下半年广州/深圳软考信息系统项目管理师报名

信息系统项目管理师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资…

Vue3 axios数据请求封装

Vue3 axios数据请求封装 环境&#xff1a;vue3tsvite 首先在项目目录下安装axios 运行 npm install axios 成功后在package.json文件会显示。 目录&#xff1a; request.ts文件代码&#xff1a; import axios from axiosconst request axios.create({baseURL:https://api.…

装配木牛前雷达的2023款创维汽车EV6被评为“最强主动安全车型”

近日&#xff0c;全新升级的2023款创维EV6改款车型接受了中国汽车技术研究中心&#xff08;以下简称“中汽中心”&#xff09;的安全碰撞实验。据称&#xff0c;该款车型在主动安全测试中得分率高达98.97%&#xff0c;这近满分的成绩再次刷新了国内主动安全汽车排行榜&#xff…

Android 之 Paint API —— Typeface (字型)

本节带来Paint API系列的最后一个API&#xff0c;Typeface(字型)&#xff0c;由字义&#xff0c;我们大概可以猜到&#xff0c;这个 API是用来设置字体以及字体风格的&#xff0c;使用起来也非常的简单&#xff01;下面我们来学习下Typeface的一些相关 的用法&#xff01; 官方…

右击不显示TortoiseGit图标处理方法

第一种 右键--》TortoiseGIt--》setting--》Icon Overlays--》Status cache&#xff0c;按照下图设置&#xff0c;然后重启电脑。 第二种 进入注册信息&#xff0c;按照步骤找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIden…

CS144学习笔记(1):Internet and IP

1.网络应用 网络应用可以在世界范围内交换数据&#xff0c;例如你可以通过浏览器读取出版社服务器提供的文章。网络应用的基本模型&#xff1a;两台主机各自在本地运行一个程序&#xff0c;程序通过网络来通信。 最常用的通信模型使用双向可靠字节流&#xff0c;通信的两台主机…