Java中的基础数据类型

Java基本数据类型

基本数据类型

8种基本数据类型?
整型:byte、short、int、long
浮点型:float、double
布尔型:boolean
字符型:char

整型中 byte、short、int、long 的取值范围?

  • byte:8位,最大存储量255,存放的数值范围-128~127之间
  • short:16位,最大数据存储65536,存放的数据范围-32768~32767之间
  • int:32位,最多数据存储2的32次方减1, 范围负的2的31次方~正的2的31次方减1
  • long:64位,最多数据存储2的64次方减1,范围负的2的63次方~正的2的63次方减1

什么是浮点型?

  • 简单讲,浮点型就是表示带有小数的数据,相对于定点数而言,浮点数利用指数使小数点的位子可以根据需要上下浮动,从而可以灵活得表达更大范围的实数。

什么是单精度和双精度?

  • 单精度浮点数在机内占4个字节、有效数字8位、表示范围:-3.40E+38 ~ +3.40E+38
  • 双精度浮点数在机内占8个字节、有效数字16位、表示范围:-1.79E+308 ~ +1.79E+308
  • Java中,所有的浮点型字面值,默认当做double类型来处理,如果要想当做float类型来处理,则强制转换或者在字面后面加f

为什么不能用浮点型表示金额?

  • double的精度太低,不适合,一般采用bigdicimal这个引用类型

自动拆装箱

什么是包装类型

  • 对基本数据类型对应的类型,这些类的对象可以和基本数据类型的变量直接互相赋值,并且这些类比对基本数据类型而言具有更多的功能。
    什么是基本类型
  • 又称为内置类型,是Java中不同于类的特殊类型。
    什么是自动拆装箱
  • 自动装箱:将基本数据类型自动转换为对应的包装类
  • 自动拆箱:将包装类自动转换为对应的基本数据类型
Integer i=10;//自动装箱
int b=i; //自动拆箱

Integer 的缓存机制

  • int装箱用到的一个方法是valueOf()方法
  public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
  • 传入的i,先和IntegerCache比较,如果其返回不存在,再new一个Integer对象

String

字符串的不可变性

  • 当给一个字符串重新赋值后,老值并没有在内存中销毁,而是重新开辟一块空间存储新值。
  • 如果在开发中对含有大量字符的字符串进行遍历赋值修改是,会对内存中产生很多无法释放的字符串对象,造成内存垃圾
  • 堆内存中字符串对象可以用于(指向)多个字符串变量

JDK 6 和 JDK 7 中 substring 的原理及区别?

  • JDK6中,String是通过字符数组实现的,Sring类包含三个成员变量:char value[],int offset ,int count。他们分别用来存储真正的字符数组,数组的第一个位置索引以及字符串中包含的字符个数。
  • 调用substring的时候,会创建一个新的string对象,当时这个string的值仍然指向堆中的同一个字符数组
  • 如果字符串很长,当时如果只要切割很短的一段。这可能会导致性能问题,因为只需要的是一小段字符序列,却引用了整个字符串,这长字符串一直被引用,可能导致内存泄漏。一般采用加一个空字符解决。x=x.substring(x,y)+""
//JDK 6
String(int offset, int count, char value[]) {
    this.value = value;
    this.offset = offset;
    this.count = count;
}
public String substring(int beginIndex, int endIndex) {
    //check boundary
    return  new String(offset + beginIndex, endIndex - beginIndex, value);
}
  • 上述问题,在JDK7中得到解决,其会在堆内存中创建一个新的数组。
//JDK 7
public String(char value[], int offset, int count) {
    //check boundary
    this.value = Arrays.copyOfRange(value, offset, offset + count);
}
public String substring(int beginIndex, int endIndex) {
    //check boundary
    int subLen = endIndex - beginIndex;
    return new String(value, beginIndex, subLen);
}

replaceFirst、replaceAll、replace 区别?

  • replace:参数为target和replacement,也就是替换的目标对象和新对象
  • replaceAll:参数为regex和replacement,第一个参数表示正则表达式
  • replaceFirst:参数和replaceAll一样,他执行匹配的第一个结果

String 对“+”的重载?

  • String对“+”的支持其实是使用了StringBuilder以及他的append、toString两个方法。

字符串拼接的几种方式和区别?

  • 加号“+”:可以用字符串和任意类型加号拼接。时间空间成本高
  • String contact()方法:调用和传入都必须是字符串,而且调用方法不能为null。时间空间成本高
  • StringUtils join()方法:适用于将ArrayList转换为字符串。
  • StringBuffer append()方法:线程安全
  • StringBuilder append()方法:线程不安全

String.valueOf 和 Integer.toString 的区别?

  • 不同于Integer.toString(int),valueof有大量的重载方法
public static String valueOf(int i) {
    return Integer.toString(i);
}
  • String的valueof方法是将各种类型转换成String,内部重载了不同类型转String的处理,所以推荐使用valueof方法。

switch 对 String 的支持?

  • jdk7中,switch的参数可以是string类型。目前已经支持 byte short int char string
  • 利用String的hash值,本质上是switch-int结构。并且利用到了equals方法来防止hash冲突的问题。最后利用switch-byte结构,精确匹配

字符串池、常量池(运行时常量池、Class 常量池)、intern

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可乐欢丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值