当前位置: 首页 > article >正文

javase笔记4----常用类型

常用类型

包装类

简介

java语言是面向对象的语言,但是其中的八大基本数据类型不符合面向对象的特征。

因此java为了弥补这样的缺点,为这八种基本数据类型专门设计了八种符合面向对象特征的的类型,这八种具有面向对象特征的类型,统称为包装类。

包装类,就是在类的内部,维护了一个基本数据类型的成员变量,以及其他方法,常量等。

装箱和拆箱

装箱boxing : 由基本数据类型转型为包装类型。
     - 调用包装类的构造器,进行装箱
     - 调用valueOf()静态方法,进行装箱
拆箱 unboxing: 由包装类型转型为基本数据类型。
     - 调用xxxValue()非静态方法,进行拆箱

//装箱
Integer num = new Integer(1);
Integer num2 = Integer.valueOf(1);
//拆箱
int i = num.intValue();

自动装箱和拆箱

自动装箱 : 直接使用一个基本数据类型的变量或字面值给一个包装类型的引用进行赋值即可 
自动拆箱 : 直接使用一个包装类型的引用给一个基本数据类型的变量进行赋值即可

自动的装箱 : 省略掉的是  valueOf 方法

自动的拆箱 : 省略掉的是  xxValue 方法

Integer num = 1;//自动装箱
int x = num;//自动拆箱  
int y = new Integer(100);

包装类的常量池

对于装箱操作后的包装类的对象,jvm在堆中,维护了一个常量池,该常量池适用于调用了valueOf()方法产生的包装类对象,以及自动装箱的包装类对象。不适用于new关键字创建的包装类对象。

1. Byte,Short,Integer,Long四种类型的常量池的值范围[-128,127]

2. Character的常量池范围[0,127]

3. Boolean的常量池就只有两个值true和false

4. 浮点数类型没有常量池

包装类的其他常用方法

Integer.toBinaryString();  转成二进制
Integer.toHexString();    转成16进制
Integer.toOctalString()   转成8进制
public static int parseInt(String str):  字符串转成int类型
public static Integer valueOf(String str):  字符串转成Integer类型

上述两个方法都用Integer类名调用

BigDecimal

java语言提供了BigDecimal这个类来完善这类运算,可以非常精确,可以精确到小数点后无数位。BigDecimal 通常支持任意位数的小数部分,用来对超过16位有效位的数进行精确的运算。

常用构造器

BigDecimal(int v)    创建一个具有参数所指定整数值的对象。
BigDecimal(double v)    创建一个具有参数所指定双精度值的对象。
BigDecimal(long v)    创建一个具有参数所指定长整数值的对象。
BigDecimal(String v)    创建一个具有参数所指定以字符串表示的数值的对象。 

常用方法

add(BigDecimal)        BigDecimal对象中的值相加,返回BigDecimal对象
subtract(BigDecimal)   BigDecimal对象中的值相减,返回BigDecimal对象
multiply(BigDecimal)  BigDecimal对象中的值相乘,返回BigDecimal对象
divide(BigDecimal)   BigDecimal对象中的值相除,返回BigDecimal对象。该方法可能会遇到无限精度问题,会抛出异常,使用时需注意

BigDecimal b1 = new BigDecimal(3);
BigDecimal b2 = new BigDecimal(1.5);

BigDecimal r1 = b1.add(b2);
BigDecimal r2 = b1.subtract(b2);
BigDecimal r3 = b1.multiply(b2);
BigDecimal r4 = b1.divide(b2);

Date日期类型

简介

1. 是一个用来表示时间、日期的类,这个类在 java.util 包中。

2. java中的时间使用标准类库的Date类型来表示,是用距离某一个固定时间点的毫秒数表达的一个特定的时间点:

3. 固定时间点:1970年1月1日00:00:00

4. UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。

5. Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。

常用构造器

1. Date() :获取当前系统时间

2. Date(long time):设置一个距离固定点的指定毫秒数的时间点。

Date now = new Date();
System.out.println(now);
Date t = new Date(1000*60*60*24);
System.out.println(t);

常用方法

1. long getTime()

2. void setTime(long time)

Calender类型

简介

Calendar: 日历,是用来表示时间、日期的类。在Date类中,有很多的方法都已经废弃了,使用 Caneldar中的某些方法进行实现。

java.util.Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。

Calendar是抽象类型,其具体子类是针对不同国家的日历系统

常用方法

getInstance方法

Calendar提供的get方法与一些常量合用可以获取日期及时间分量

Calendar提供的set方法与一些常量合用可以设置日期及时间分量

Calender c = Calender.getInstance();
int year = c.get(Calender.YEAR);
int month = c.get(Calender.MONTH);


http://www.kler.cn/news/316171.html

相关文章:

  • 怎么使用Chrome与C++实现高效自动化测试
  • 软件架构的演变与趋势(软件架构演变的阶段、综合案例分析:在线电商平台架构演变、开发补充)
  • lora 微调3B模型微调前有5G 量化f16 后最后导出模型容量变小了只有2G了,为什么?
  • ArcGIS核密度分析(栅格处理范围与掩膜分析)
  • mysql性能优化-延迟写和异步写优化
  • 算法之逻辑斯蒂回归(Logistic regression)
  • 计量校准中测量溯源性是什么?已校准设备要怎么处理?
  • C# 关于“您与该网站的连接不是私密连接...”的问题
  • MacOS安装homebrew,jEnv,多版本JDK
  • 2024年 人工智能领域的一些成果与未来发展趋势 形式丰富多样
  • 数据结构----栈与递归例题讲解
  • 大模型学习方向不知道的,看完这篇学习思路好清晰!!
  • spring boot 项目中集成使用 Elasticsearch
  • VR全景摄影制作中的常见问题及解决方案
  • Vue(15)——组合式API②
  • 关于SSR和SSG
  • PDF产品册营销推广利器FLBOOK
  • 每日学习一个数据结构-哈夫曼树Huffman Tree
  • 倒排索引(反向索引)
  • Map和Set有什么区别?
  • 高刷显示器哪个好?540Hz才有资格称高刷
  • 基于深度学习的多智能体协作
  • 电力行业螺钉螺帽螺丝缺失检测数据集 voc yol
  • 【Linux】常用指令【更详细,带实操】
  • 论文(六):Fire-Net: A Deep Learning Framework for Active Forest Fire Detection
  • Vue 3 是 Vue.js 的下一代版本,它在许多方面都带来了显著的改进和变化,旨在提高开发效率和用户体验
  • 如何使用 Next.js 进行服务端渲染(Server-Side Rendering, SSR)
  • leetcode234回文链表
  • 初学者的鸿蒙多线程并发之 TaskPool 踩坑之旅
  • 我向大模型求了一份Stable Diffusion的应用场景