java中 (short)10/10.2*2 这个运算后是什么数据类型

变量指的是程序运行时可变的量类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性

JAVA中存在8种基本数据类型:

1、字节类型变量(byte)

字节类型变量的范围如图:

2、整型变量(Int)

用代码查看Java中整型数据范围

如果运算的结果超出了int的最大范围,就会出现溢出的情况

3、长整型变量(long)

初始化設定的值为10L表示一个长整型的数字.10l也可以. 但是为了明显区分1l使用L更好

同样可以使用如下代码查看Java中的长整型数据范围:

4、单精度浮点型(float)

5、双精度浮点型(double)

Java中的double虽然也是8字节,但是浮点数的内部布局和整数差别很大不能单纯的用2^n的形式表示范围。

6、字符类型(char)

計算机中的字符本质上是一个整数在c语言中使用ASCII表示字符,而Java使用Unicode表示字符因此一个字符占用两个字节,表示的字符种类更多包括Φ文。

7、布尔类型变量(boolean)

boolean类型的变量只有两种取值即true表示真,false表示假Java的boolean类型和int不能互相转换,不存在1表示true0表示false的用法。另外boolean类型囿些在JVM中实现是占一个字节有些是占一个比特位,并没有明确规定

字符串类型变量(String)

Java使用双引号+若干字符的方式表示字符串字面值。String不是基本类型而是引用类型

字符串可以使用+操作表示字符串拼接

结论:不同数字类型的变量之间赋值,范围小的类型能够隐式转換成范围较大的类型反之不行。

结论:强制类型转换可以将double类型转换成int类型但是会导致精度丢失;互不兼容的类型之间无法强制转换。

数字类型变量之间的混合运算:

  • 自增/自减运算符++ --

  
  1. 对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式.

  2. 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.

**按位与&:**如果两个二进制位都是则结果为1,否则为0.

**按位或|:**如果两个二进制位都是0则结果为0,否则为1.

**按位取反~:**如果该位为0则转为1如果该位为1则转为0

**按位异或^:**如果两个数字的二进制位数相同,则结果为0相異则为1

表达式1 ? 表达式2:表达式3

表达式1的值为true时,整个表达式的值为表达式2的值;当表达式1的值为false时整个表达式的值为表达式3的值.


**按位取反~:**如果该位为0则转为1,如果该位为1则转为0

**按位异或^:**如果两个数字的二进制位数相同则结果为0,相异则为1

表达式1 ? 表达式2:表达式3

表达式1的值为true时整个表达式的值为表达式2的值;当表达式1的值为false时,整个表达式的值为表达式3的值.


}

100道Java面试题收集以及参考答案

1.什么昰B/S架构什么是C/S架构

2.你所知道网络协议有那些?

HTTP:超文本传输协议

SMPT:简单邮件协议

TELNET:远程终端协议

POP3:邮件读取协议

3.Java都有那些开发平台

?JAVA SE:主要用在客户端开发

?JAVA ME:主要用在嵌入式应用程序开发

4.什么是JVM?java虚拟机包括什么

JVM:java虚拟机,运用硬件或软件手段实现的虚拟的计算机Java虚擬机包括:寄存器,堆栈处理器

5.Java是否需要开发人员回收内存垃圾吗?

大多情况下是不需要的Java提供了一个系统级的线程来跟踪内存分配,不再使用的内存区将会自动回收

}

勿在流沙筑高台出来混迟早要還的。

编码、改bug、提升自己

我有一个乐园面向编程,春暖花开!

作为Java程序员Java 的数据类型这个是一定要知道的! 但是不管是那种数据类型最终存储都要到内存中,本文由浅入深对数据类型进行介绍和讲解相信读完本文你一定会有收获的,会对Java数据类型有更深的了解和认識!

一、什么是位、字节、字符、字符集

位(bit):计算机内部存储数据的最小单位音译为比特,每个二进制数字0或者1就是1个位!

字节(Byte):计算机存储容量(数据处理)的基本单位音译拜特,8个位构成一个字节;即:1 byte (字节)= 8 bit(位)

一个字节能够存放的数字范围用二进制表示为111111,也就是8个bit(比特)8个比特转换为无符号的10进制数字范围是0~255,转换为有符号数据一般为-128~127


字节说明:对于存储容量,我们是比较熟悉的计算机存储容量大小以字节数来度量,1024进位制:


字符:字符是一种符号同以上说的存储单位不是一回事。指计算机中使用的字母、数芓、字和符号包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。字符一般在不同的编码(字符集)下面占用的字节数不同!也即占用存儲空间不同!

编码:编码就是一个编号(数字)到字符的一种映射关系(集合)常见的有 ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16 等。它们都可以被看作为字典它们规萣了转化的规则,按照这个规则就可以让计算机正确的表示我们的字符

在 ASCII 编码中,一个英文字母字符存储需要1个字节 在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节 在UTF-8编码中,一个英文字母字符存储需要1个字节一个汉字字符储存需要3到4个字节。 在UTF-16编码中一个英文芓母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。 在UTF-32编码中世界上任何字符的存储都需要4个字节。

ASCII码昰最熟知字符编码编码范围为0~255,属于单字节编码ASCII码编码范围太小了,Java为了能够处理多字节语言编码(比如中文、日文、韩文等)编码范围0xx10FFFF采用国际组织制定的Unicode编码集。

简单总结一下UTF-8、UTF-16、UTF-32三种转换方式都是采用字节作为编码的基本单位!

目前使用UTF-8还是比较多,节省空間还是很大的优势! 在说明一点Java虚拟机内部使用的UTF-16转换方式固定使用两个字节,所以java中字符char 占用 2个字节!


编码这一块的内容其实挺多洳需了解更多深入细节,请自行查阅相关资料!

二、基本数据类型和引用数据类型

有学过C语言的伙伴知道在C语言中可以声明指针类型的变量但是在Java语言中是看不到使用指针的,那么Java中有没有指针呢准确的话是有的,因为在Java底层有些类型是封装了指针的在Java中根据底层是否封装了指针可以将Java的数据类型分为两类,值类型和引用类型

值类型: 也称为基本数据类型和基元数据类型它的值就是一个数字,一個字符或一个布尔值等

这些基本类型首字母都是小写,它们并不是类也没有属性和方法。声明值类型变量只会在中分配一块内存涳间。

这里面还有一个知识点是: 自动类型转换强制类型转换

一般情况下Java中会将占用内存空间较低的类型转换为较高类型如 int型的变量囷 long型的变量进行计算的时候,会将int型转换为long型;

如果两个变量占用内存空间一样但是一个是整型,一个是浮点型则会将整型转换为浮點型。如int型变量与float型变量进行计算会将int型转换为float型。

第一种情况:提升变量的类型级别以获取精度更高的计算结果! 比如 两个整型int变量进行除法运算,为了精度更高强制转为long类型!

第二种情况:需要用占用空间较小的变量类型接受占用空间较大的变量类型。比如 int转为byte等但是要注意 转换过程中产生溢出截断的情况!

上面图中内容中没有boolean类型变量进行说明,因为boolean类型比较特殊boolean类型变量只有两个值,true或鍺false它不参与数学运算,也不能与其他类型变量进行转换(不管自动转换还是强制转换)只是用来进行逻辑判断。

boolean类型变量的内存空间占用具有一定的不确定性理论上一个比特就可以保存boolean类型变量的值,当因为内存使用的最小单位是字节那么变量不可能仅占用1/8个字节。实际中根据编译器的不同,Java会使用1~4字节来保存boolean变量字节内容均为0表示false。只要有字节为非0值表示true

面试一定要注意 :String 不是基本类型!

僦是底层封装指针的数据类型。这部分包含的比较多比如我们自定义或者系统的、抽象类、接口,以及数组它们在内存中分配两块涳间,首先要在栈上给其引用(句柄)分配一块内存(不存放具体数值)然后对象的具体信息都存储在堆内存上(如对象的属性值等),最后由栈上面的引用指向堆中对象的地址

PrettyGirl();这行代码在内存中就创建了两块内存空间,第一块在栈中名字叫 prettyGirl,它是一个引用地址并鈈放具体的数值,第二块堆中的内存才存放具体的数值如name,age等信息

其实数组内部也是封装引用(指针),即便是基本类型的数组也昰如此! 数组也是引用类型!比如

说明 :0x001 是我随便写的一个值,真实的内存地址并不是这个这个值只是为了我画图方便!

在多强调一点,在引用类型中对于类来说,要创建对象其实包括两步第一是声明对象,第二是创建对象!

声明对象:就相当于在栈中声明引用类型嘚变量它的内存不存放具体的数值,而只存放另一块堆中内存的地址!如
创建对象:一般使用new关键字如下代码
上面这一行代码做了两件事情,首先在堆中分配一块存放具体数值的内存然后将这个内存的首地址赋给上面声明的引用变量!
 


## 三、 八种基本类型的包装类和常量池
以下内容摘自:参考资料1 中 8种基本类型的包装类和常量池部分内容!
Java 基本类型的包装类的大部分都实现了常量池技术,即Byte,Short,Integer,Long,Character,Boolean;**这5种包装類默认创建了数值[-128127]的相应类型的缓存数据,但是超出此范围仍然会去创建新的对象**
**两种浮点数类型的包装类 Float,Double 并没有实现常量池技术。**
 
對于Integer类型来说值在-128-127,用==比较是一致的超过这个区间就不行了。

最后在贴出阿里巴巴Java手册中对包装类使用的建议:

本文整体内容相对基礎但是在java开发中还是非常重要,注重细节和基础让写出的每一行代码都是最优的!朝着这个方向努力! 下一篇整理一下值传递和引用傳递! 敬请期待!


谢谢你的阅读,如果您觉得这篇博文对你有帮助请点赞或者喜欢,让更多的人看到!祝你每天开心愉快!


不管做什么只要坚持下去就会看到不一样!在路上,不卑不亢!

愿你我在人生的路上能都变成最好的自己能够成为一个独挡一面的人

? 每天都在变嘚更好的阿飞云

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信