整理了一些网上的面试经,有不足的地方还希望大佬们多多指点~
封装类是引用类型,基本类型在传递参数的时候都是按值传递,而封装类型是按引用传递的(其实引用也是按值传递的,但是传递的是对象的地址)
它们的默认值不同基础数据类型是0和封装类型是null,基本数据类型都是final修饰的,不能继承扩展新的类和方法
基本类型在内存中存储在栈中,引用类型的引用(值的地址)存储在栈中,而实际的对象(值)是存在堆中
基本数据类型的好处就是速度快不涉及到对象的构造和回收,封装类的目的是为了更好地处理数据之间的转换
例如:int 是基本类型,直接存放数据;integer是类,产生对象时用一个引用指向这个对象
数据类型分为两种:引用数据类型和基础数据类型
基础数据类型又分为四类八种
整型在做运算时会被默认作为int数据类型运算,所以btye、short在运算时,注意,如果和整型常量运算,会被转化成int。
1,byte
内存占1个字节,一个字节占8位
取值范围:-128~127
2,short
内存占2个字节,16位。
取值范围:负2的15次方~2的15次方-1
3,int
内存占4个字节,32位
取值范围:负2的31次方~2的31次方-1 2147483647
4,long
内存占8个字节,64位
取值范围:负2的63次方~2的63次方-1
如果确认是long数据类型,那么在声明时一定要加一个L(可以用小写的l,但是建议用大写,因为小写和1比较相似,容易认错)
因为0到1之间有无数多个小数,所以我们没有办法用有限的空间存储无限多的数。小数在计算机中都是以近似值存储。所以浮点型是有一个精度范围的。
浮点型中,double是默认的数据类型,float只有在数据后加一个f(F)才表示这是一个float数据类型。
内存占4个字节,32位
单精度浮点型,精度是7位(一共7位,包括整数部分和小数部分)
内存占8个字节,64位
双精度浮点型,精度是15(一共15位,包括整数部分和小数部分)
存储字符的数据类型
内存占4个字节,可以存储一个字符。
表示真假的数据类型,只有两个值:true(真)、false(假)
内存占1个字节
byte->short->int->long->float->double
直接赋值,因从小到大,不需要强制数据类型转换。
反方向要求必须强制数据类型转换
Integer会占用更多的内存,以下为int和Integer的区别:
parseInt()函数用法:
parseInt(string,radix);
string:必需,表示被解析的字符串
radix:可选,表示要解析的熟悉的基数,该值介于2~36之间。如果省略该参数或其值为0,则数字将以10为基础来解析。如果字符串以”0x”或”0X”开头,将以16为参数。如果参数小于2或者大于36,则parseInt()将返回NaN
返回值为:解析后的数字
// 方式一:
double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
// 方式二:
new java.text.DecimalFormat("#.00").format(3.1415926);
// #.00 表示两位小数 #.0000四位小数 以此类推…
// 方式三:
double d = 3.1415926;
String result = String.format("%.2f", d);
// %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。
//方法四:
Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0
char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char类型占2个字节(16比特),所以放一个中文是没问题的。
备注:问题整理来源于唐尤华
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。