前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java面试之数据类型(一)

Java面试之数据类型(一)

原创
作者头像
黄桂期
发布2018-07-20 21:08:10
8910
发布2018-07-20 21:08:10
举报
文章被收录于专栏:土豆专栏土豆专栏

整理了一些网上的面试经,有不足的地方还希望大佬们多多指点~

基础类型

  • 基础类型(Primitives)与封装类型(Wrappers)的区别在哪里

封装类是引用类型基本类型在传递参数的时候都是按值传递,而封装类型按引用传递的(其实引用也是按值传递的,但是传递的是对象的地址)

它们的默认值不同基础数据类型是0和封装类型是null,基本数据类型都是final修饰的,不能继承扩展新的类和方法

基本类型在内存中存储在栈中,引用类型的引用(值的地址)存储在栈中,而实际的对象(值)是存在堆中

基本数据类型的好处就是速度快不涉及到对象的构造和回收,封装类的目的是为了更好地处理数据之间的转换

例如:int 是基本类型,直接存放数据;integer是类,产生对象时用一个引用指向这个对象

  • 简述九种基本数据类型的大小,以及他们的封装类

数据类型分为两种:引用数据类型和基础数据类型

基础数据类型又分为四类八种

整型:整型就是可以存储整数的数据类型,Java中所有的整型都分正负。整型直接运算一定得到整型。

整型在做运算时会被默认作为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数据类型。

1,float

内存占4个字节,32位

单精度浮点型,精度是7位(一共7位,包括整数部分和小数部分)

2,double(常用的存储小数的数据类型)

内存占8个字节,64位

双精度浮点型,精度是15(一共15位,包括整数部分和小数部分)

字符型

1,char

存储字符的数据类型

内存占4个字节,可以存储一个字符。

布尔型
1,boolean

表示真假的数据类型,只有两个值:true(真)、false(假)

内存占1个字节

数据类型转换:基础数据类型转换

byte->short->int->long->float->double

直接赋值,因从小到大,不需要强制数据类型转换。

反方向要求必须强制数据类型转换

  • int 和 Integer 哪个会占用更多的内存? int 和 Integer 有什么区别?parseInt()函数在什么时候使用到

Integer会占用更多的内存,以下为int和Integer的区别:

  1. Integer是int的包装类,int则是java的一种基本数据类型
  2. Integer变量必须实例化后才能使用,而int变量不需要
  3. Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
  4. Integer的默认值是null,int的默认值是0

parseInt()函数用法:

代码语言:javascript
复制
parseInt(string,radix);

string:必需,表示被解析的字符串

radix:可选,表示要解析的熟悉的基数,该值介于2~36之间。如果省略该参数或其值为0,则数字将以10为基础来解析。如果字符串以”0x”或”0X”开头,将以16为参数。如果参数小于2或者大于36,则parseInt()将返回NaN

返回值为:解析后的数字

  • float和double的默认值是多少
基本数据类型默认值
基本数据类型默认值
  • 如何去小数四舍五入保留小数点后两位

// 方式一:

代码语言:javascript
复制
double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

// 方式二:

代码语言:javascript
复制
new java.text.DecimalFormat("#.00").format(3.1415926);
// #.00 表示两位小数 #.0000四位小数 以此类推…

// 方式三:

代码语言:javascript
复制
double d = 3.1415926;
String result = String.format("%.2f", d);
// %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。

//方法四:

代码语言:javascript
复制
Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0
  • char 型变量中能不能存贮一个中文汉字,为什么

char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char类型占2个字节(16比特),所以放一个中文是没问题的。

备注:问题整理来源于唐尤华

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础类型
    • 整型:整型就是可以存储整数的数据类型,Java中所有的整型都分正负。整型直接运算一定得到整型。
      • 浮点型:存储小数的数据类型
        • 字符型
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档