JAVA中分为基本数据类型及引用数据类型dub

byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0

short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0

int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0

long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L

float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0

double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0

char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空

boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false

二、Java数据类型基本概念:

数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。

基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

三、Java中的数据类型与内存的关系

在Java中,每个存放数据的变量都是有类型的,如:

charch;floatx;inta,b,c;

ch是字符型的,就会分配到2个字节内存。不同类型的变量在内存中分配的字节数不同,同时存储方式也是不同的。

所以给变量赋值前需要先确定变量的类型,确定了变量的类型,即确定了数据需分配内存空间的大小,数据在内存的存储方式。

四、Java数据类型在内存中的存储:

1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;

2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念),

基本类型和引用类型的内存模型本质上是不一样的。

例1:我们分析一下”==“和equals()的区别。

首先,我定以两个String对象

Stringa="abc";

Stringb="abc";

然后

if(a==b){

System.out.println("a==b");

}else{

System.out.println("a!=b");}

程序输出a!=b

原因:a和b的地址是不相同的,a==b比较的是两个变量的地址

例2:定义两个基本类型

inta=4;

intb=4;

if(a==b){System.out.println("a==b");}

else

{System.out.println("a!=b");}

输出:a==b

原因:==比较的是两个变量的内容

猜想:不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于对象类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。

五、Java基本类型取值范围计算

从计算机组成原理的角度可以解释:

byte在计算机中是占8个字节的,而且byte是有符号整形,用二进制表示时候最高位为符号位0代表正数1代表负数。

最大值:127即2的7次方减去1;最小值:即2的7次前面加个负符号:-128。(包含开始,不包含结尾);

正数在计算机中是以原码形式存在的;

负数在计算机中是以其补码形式存在的,就是负数的绝对值的原码转为二进制再按位取反后加1。

下边这个10和-10为例来介绍的:10原码:00001010它在计算机中的存储就是00001010,-10按照前面说的算除其绝对值为10,转为二进制00001010按位取反11110101再加1后:11110110,此为-10补码,好的,计算机中的11110110就是代表-10了。

我们来看-128绝对值128的二进制表示:10000000按位取反01111111加1后:10000000,也就是说-128在计算机中的表示就是10000000了,再来看一下-129在计算机中的表示,绝对值129的范围已经超出了了byte的位数。所以要注意这类问题;

六、java类型介绍

1、概述:

Java中的数据类型分为引用数据类型和基本数据类型。

引用数据类型分3种:类,接口,数组;

基本数据类型又分布尔类型和数值类型;

布尔类型:boolean(逻辑型)trureorfalse默认是false;

数值类型分定点类型和浮点类型;

定点类型分整数类型和字符型;

2、JAVA变量的默认初始化

类型

默认初始化值

boolean

false

int

0

short

float

0.0

double

char

\

long

byte

object

null

3、类型详细讲解:

1)整数类型:byte、short、int、long都是表示整数的,只不过他们的取值范围不一样。byte(字节类型)一个byte8位,取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)默认是0short(短整型)一个short16位,取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)默认是0int(整型)一个int32位,取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)默认是0long(长整型)一个long64位,取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)默认是0L或0l推荐用大写;

可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”。

1.1)定点常量

定点常量是整型常数,它可用十进制、八进制、十六种进制三种方式来表示。

十进制定点常量:如123、-456、0。

八进制定点常量:以0前导,形式为0dd...d。如0123表示十进制数83,-011表示十进制数-9。

十六进制定点常量:以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18。

1.2)定点变量

定点变量即整型变量,可细分成字节型变量、整型变量、短整型变量和长整型变量四种。

对各种定点变量的开销内存字节数和数值范围作简要说明。

需要注意的是,如果要将一定点常量赋值给一个定点变量,需要查验常量是否在该变量的表达范围内,如超出范围程序会编译出错。

2)char型(字符型)

Java中一个字符(char)表示Unicode字符集中的一个元素。

Unicode字符由16位组成,因此,有(65535)个不同的字符可用,

Unicode字符集包含所有不同语言的字符,以及数学、科学、文字中的常用符号,所以给了我们很大的灵活性。字符由单引号括起来的单个字符表达,通常用16进制表示,

范围从’’到’’(u告诉编译器你在用两个字节[16位]字符信息表示一个Unicode字符)。

用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容,字符的存储范围在\~\,在定义字符型的数据时候要注意加'',比如'1'表示字符'1'而不是数值1。

2.1)字符常量

字符常量指用单引号括起来的单个字符,如‘a’,‘A’,请特别注意,字符的定界符是单引号,而非双引号。

除了以上所述形式的字符常量值之外,Java还允许使用一种特殊形式的字符常量值,

这通常用于表示难以用一般字符来表示的字符,这种特殊形式的字符是以一个“\”开头的字符序列,称为转义字符。

Java中的常用转义字符见表

2.2)字符变量

以char定义的变量,如charc='a';

要特别加以说明的是,Java的文本编码采用Unicode集,Java字符16位无符号型数据,一个字符变量在内存中占2个字节。

注:charc='1',我们试着输出c看看,System.out.println(c);结果就是1,而如果我们这样输出呢System.out.println(c+0);结果却变成了49,这是因为0是int型,进行了向上类型转换,结果是个int型。如果我们这样定义c看看,charc='\1';输出的结果仍然是1,这是因为字符'1'对应着unicode编码就是\1。

3)浮点类型:分float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同。

3.1)浮点常量

即带小数点的实型数值,可以由直接带小数点的数值和科学计数法两种形式来表示:

带小数点的数值形式:由数字和小数点组成,如0.123、.123、123.、123.0。

科学计数法表示形式:由一般实数和e±n(E±n)组成,如12.3e3、5E-3,它们分别表示12.3乘以10的3次方,5乘以10的-3次方。需要注意的是,e或E之前必须有数字,且e或E后面的指数必须为整数。

3.2)浮点变量

浮点变量有单精度变量和双精度变量之分,不同的精度开销的内存字节数和表达的数值范围均有区别。两种浮点变量占内存字节数和数值范围

浮点常量也有单精度和双精度之分,前面列出的常量均是双精度常量,如果要特别说明为单精度常量,可以数据末尾加上f或F作为后缀,如12.34f。如果要特别指明一个浮点常量是双精度常量,数据末尾不需要添加后缀,或者在数据末尾加上d或D作为后缀,如12.34d。

float(单精度浮点型)一个float32位,占用4个字节,例3.2F,默认是0.0f,3.402823e+38~1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)。double(双精度浮点型)一个dobule64位占用8个字节,例3.2,默认是0.0,1.797693e+308~4.9000000e-324占用8个字节

如果要表示一个数据是float型的,可以在数据后面加上“F”。浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。

在Java基本类型在使用字面量赋值的时候,有几个简单的特性如下:

1】当整数类型的数据使用字面量赋值的时候,默认值为int类型,就是直接使用0或者其他数字的时候,值的类型为int类型,所以当使用longa=0这种赋值方式的时候,JVM内部存在数据转换。

2】浮点类型的数据使用字面量赋值的时候,默认值为double类型,就是当字面两出现的时候,JVM会使用double类型的数据类型。

3】从JDK5.0开始,Java里面出现了自动拆箱解箱的操作,基于这点需要做一定的说明:

对应原始的数据类型,每种数据类型都存在一个引用类型的封装类,分别为Boolean、Short、Float、Double、Byte、Int、Long、Character,这些类型都是内置的封装类,这些封装类(Wrapper)提供了很直观的方法,针对封装类需要说明的是,每种封装类都有一个xxxValue()的方法,通过这种方法可以把它引用的对象里面的值转化成为基本变量的值,不仅仅如此,每个封装类都还存在一个valueOf(String)的方法直接把字符串对象转换为相应的简单类型。

在JDK5.0之前,没有存在自动拆解箱的操作,即AutoBox操作,所以在这之前是不能使用以下方式的赋值代码的:Integera=0;//这种赋值方式不能够在JDK1.4以及以下的JDK编译器中通过,但是JDK5.0出现了自动拆解箱的操作,所以在JDK5.0以上的编译器中,以上的代码是可以通过的

引用数据类型:

数组

String:字符串型,用于存储一串字符

数据类型变量名=值、表达式;

例:Stringname="柯南";

inta=50;

注:“=”并不是数学中的“等号”,而是一个赋值运算符

Java变量命名规则:

1:必须以字母、下划线“_”、或“$”符号开头

2:可以包括数字、区分大小写

3:不能使用Java语言的关键字,例如int、class、public等

Java中的六种运算符:

·算术运算符

·赋值运算符

·关系运算符

·逻辑运算符

·位运算符

·三元运算符

算术运算符:

+:加法运算,求操作数的和

-:减法运算,求操作数的差

*:乘法运算,求操作数的乘积

/:除法运算,求操作数的商

%:求余运算,求操作数相除的余数

++:自增,操作数自加1

--:自减,操作数自减1

赋值运算符:

=:将右边的值赋给左边,例:inta=1;

+=:左右两边的和相加赋给左边,例:inta=1;a+=2;结果a的值为3

-=:左边减去右边的差赋给左边,例:inta=5;a-=2;结果a的值为3

*=:两边数值相乘的值赋给左边,例:inta=2;a*=2;结果a的值为4

/=:左边除以右边的值赋给左边,例:inta=6;a/=2;结果a的值为3

%=:左边除以右边的余数赋给左边,例:inta=7;a%=2;结果a的值为1

关系运算符

>:大于,例:inta=1;intb=2;System.out.print(a>b);其结果为false

<:小于,例:inta=1;intb=2;System.out.print(a

>=:大于等于,例:inta=1;intb=2;System.out.print(a>=b);其结果为false

<=:小于等于,例:inta=1;intb=2;System.out.print(a<=b);其结果为true

==:等于,例:inta=1;intb=2;System.out.print(a==b);其结果为false

!=:不等于,例:inta=1;intb=2;System.out.print(a!=b);其结果为true

其结果都是boolean类型,即要么是true要么是false

逻辑运算符

&&:与、并且(短路),两个条件同时为真时,结果为真

||:或、或者(短路),两个条件有一个为真时,结果即为真

!:非,(!+条件)条件为真时,结果为假

Java中的数据类型转换

1:自动数据类型转换(放大转换)

满足自动数据类型转换条件:

1)两种类型要兼容:如数值类型(整型和浮点型)

2)目标类型大于源类型:例如int型数据可以自动转换为double类型

2:强制数据类型转换(缩小转换)

在变量前加上括号,在括号中指定要强制转换的类型

例:doublea=40.9;

intb=(int)a;

注:强制转换会损失数值精度,例如double类型变量a,经强制转换为int类型后值变为40

THE END
1.六种方式实现全局唯一发号器六种方式实现全局唯一发号器 概念 发号器,也就是在系统全局生成绝对唯一的唯一id生成器,比如订单号、流水号等场景。类似于身份证号,它需要保证全局唯一,尤其是在分布式机器中,不同机器不能生成一样的号牌。我们需要通过一些算法或方式实现这个小功能。 雪花算法https://blog.csdn.net/qq_20051535/article/details/120072174
2.JavaScript数组去重的六种方式javascript技巧JavaScript数组去重的六种方式 在平时的前端开发中,常常会遇到数组去重的场景,比如表单校验重复的数据,有重复数据不让提交,或者对后端返回的数据进行去重展示等,同时它也是一道经典的前端JavaScript基础面试题,本期一起来带大家看看去重的各种花样方法,需要的朋友可以参考下https://www.jb51.net/javascript/332618qug.htm
3.六年级数学简便方法(精选11篇)⑤选用适当的方式检查。四.巩固练习 1.用简便方法计算,并说说题中用了什么运算定律? 25(1)4×+4×(2)34×0.25×4 77(3)25×125×4×8(4)1.25×(8+10)2.计算,并说说是怎样简便的? (1)17.15-8.47-1.53(2)4000÷125÷8 3.用简便方法计算,并用字母表示出来。 https://www.360wenmi.com/f/fileb18626bn.html
4.初一上册数学知识点总结①五种运算:加、减、乘、除、乘方 多个数相乘,积的符号由负因数的个数决定,当负因数有奇数个时,积的符号为负;当负因数有偶数个时,积的符号为正。只要有一个数为零,积就为零。 有理数加法法则: 同号两数相加,取相同的符号,并把绝对值相加。 https://www.ruiwen.com/zhishidianzongjie/6282527.html
5.培智学校义务教育课程标准(2016年版)评价方法除了纸笔测试之外,还可运用日常行为观察与记录、问卷调查、面谈、讨论等多种方法。评价结果可以采用多种方式呈现,如:折线图(侧面图)、评语、观察描述、案例分析、成长档案等。 (六)真实反映发展轨迹 教师要找准学生学习和评价的起点,对学生生活语文知识与技能进行全方位、持续性的评价。要注重收集、积累能够https://yun.nxeduyun.com/index.php?r=space/school/theme/content/view&id=794545
6.计算机考点基本逻辑运算"与"运算又称逻辑乘,用符号"."或"∧"来表示。运算规则如下: 0∧0 = 0 0∧1 = 0 1∧0 = 0 1∧1 = 1 即当两个参与运算的数中有一个数为0,则运算结果为0,都为1结果为1 2."或"运算(OR) "或"运算又称逻辑加,用符号"+"或"∨"表示。运算规则如下: https://xue.baidu.com/okam/pages/strategy-tp/index?strategyId=134143511553552&source=natural
7.福建中医药大学微型荧光显微镜成像系统等采购项目附件7.3、获取地点及方式:注册账号后,通过福建省政府采购网上公开信息系统以下载方式获取。 7.4、招标文件售价:0元。 8、投标截止 8.1、投标截止时间:详见招标公告或更正公告,若不一致,以更正公告为准。 8.2、投标人应在投标截止时间前按照福建省政府采购网上公开信息系统设定的操作流程将电子投标文件上传至福建省政府采购http://ccgp-fujian.gov.cn/upload/document/20221208/7d468e241095421fb35fd57f2dbb68bf.html
8.初二数学实数知识点总结3、在实数范围内,加、减、乘、除(除数不能为0)、乘方五种运算畅通无阻,在开方运算中,正实数和0总能进行开方运算,负实数只能开立方,不能开平方, 4、在有理数范围内的运算顺序和运算律在实数范围内仍然适用。 四、实数和数轴的关系 实数和数轴上的点存在着一一对应关系,即:任何一个实数都可以用数轴上的一个https://mip.oh100.com/chuer/1060530.html
9.Python开根号的几种方式六、总结 Python提供了多种方式来计算一个数的平方根,包括使用math模块、**运算符、NumPy库以及自定义函数等。根据具体的应用场景和需求,我们可以选择最适合的方式来执行这一操作。无论是简单的数学计算还是复杂的科学计算任务,Python都能够提供高效且灵活的解决方案。通过掌握这些开根号的方式,我们可以更好地利用Pythonhttps://developer.aliyun.com/article/1490182
10.计算机题库及答案6篇(全文)B 电报、电话、电传等通信方式 C 无线和有线的总称 D 报文的传送 21、你认为最能准确反映计算机主要功能的是(C) A 计算机可以代替人的脑力劳动 B 计算机可以存储大量信息 C 计算机是一种信息处理机 D 计算机可以实现高速度的运算 22、计算机内部信息的表示及存储往往采用二进制形式,采用这种形式的最主要原因是 https://www.99xueshu.com/w/filepxpej0c2.html
11.字节上岸成功,整理一波测试开发岗的基础知识,含答案HTTP有几种请求方式 HTTP1.0 定义了三种请求方法: GET, POST 和HEAD方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和CONNECT 方法。 GET和POST的区别 GET的参数放在url中,返回服务器拿数据;POST在request div里自带一个参数去服务器拿指定的数据; https://maimai.cn/article/detail?fid=1679089730&efid=YLyF0ejo0qEtjVB1UUE-yw
12.excel函数的七种方法Excel常用函数的使用方法所以尽管一行或者一列中有多个含有文本的单元格,我们也不必担心会参与到求和运算中,影响运算结果。 Ctrl+Q这个快捷键可以快速打开数据分析工具。行和列分别有求和、求平均值、计数、百分比汇总、累计汇总5种,所以共有10种计算方式。 下图是部分省市2015年~2018年GDP数据,现在要按年进行求和,按省份求每年GDP的平均值https://www.scxz.com/wz/39982.html
13.sass基本运算腾讯云开发者社区在Sass中,共有4种数字运算方式:加、减、乘、除。对于这4种运算方式,我们需要注意以下几点: (1)在Sass加法中,数值可以带单位,但是需要运算单位相同,如果不相同则编译不通过; (2)在Sass减法中,数值可以带单位,但是需要运算单位相同,如果不相同则编译不通过; https://cloud.tencent.com/developer/article/2003367