包装类
基本数据类型与包装类型
定义:专门将简单数据类型的数据进行封装,形成的对应的类.
装箱拆箱
手动装箱
概念:由基本数据类型, 完成向对应的包装类型进行转换。
方式1: 可以通过每一个包装类的构造方法来完成。 在每一个包装类的构造方法中,都有一个与之对应的基本数据类型作为参数的重载方法。 此时, 直接将需要包装起来的基本数据类型, 写到构造方法的参数中即可完成装箱。
Byte n1 = new Byte((byte)1);
Short n2 = new Short((short)2);
Integer n3 = new Integer(3);
Long n4 = new Long(4L);
Float n5 = new Float(3.14f);
Double n6 = new Double(3.14);
Character n7 = new Character('a');
Boolean n8 = new Boolean(false);
方式2: 可以通过包装类的静态方法 valueOf() 完成装箱。 每一个包装类中,都有一个静态方法 valueOf , 这个方法的参数是包装类型对应的基本数据类型的参数。 直接将需要包装起来的基本数据类型的数据, 写到这个方法的参数中, 即可完成对这个基本数据类型数据的装箱。
Byte n1 = Byte.valueOf((byte)1);
Short n2 = Short.valueOf((short)2);
Integer n3 = Integer.valueOf(3);
Long n4 = Long.valueOf(4);
Float n5 = Float.valueOf(3.14f);
Double n6 = Double.valueOf(3.14);
Character n7 = Character.valueOf('a');
Boolean n8 = Boolean.valueOf(true);
手动拆箱
概念: 由包装类型, 完成向对应的基本数据类型进行转换。
方式: 使用每一个包装类对象的 xxxValue 可以实现。 这里的 xxx 就是需要转型的基本数据类型。 例如, 如果需要转型为int类型, 则直接调用 intValue 即可。
Byte i1 = Byte.valueOf((byte) 100);
byte n1 = i1.byteValue();
Short i2 = Short.valueOf((short) 100);
short n2 = i2.shortValue();
Integer i3 = Integer.valueOf(100);
int n3 = i3.intValue();
Long i4 = Long.valueOf(100);
long n4 = i4.longValue();
Float i5 = Float.valueOf(3.14f);
float n5 = i5.floatValue();
Double i6 = Double.valueOf(3.14);
double n6 = i6.doubleValue();
Character i7 = Character.valueOf('a');
char n7 = i7.charValue();
Boolean i8 = Boolean.valueOf(true);
boolean n8 = i8.booleanValue();
某些包装类对象, 除了可以拆箱成对应的基本数据类型的数据之外。 还可以将包装起来的数字转成其他的基本数据类型的数据。 例如, Integer,除了有 intValue 之外, 还有byteValue 等方法。 其实, 就是将包装类中包装起来的int数据, 强转成byte类型返回结果。 在使用的时候, 找自己需要的方法去转型即可。
自动装箱拆箱
概念: 所谓的自动装箱和自动拆箱, 指的是在进行装箱和拆箱的时候, 不用再使用上面的方法完成装箱和拆箱的操作。 在JDK1.5之后, 装箱和拆箱是可以自动完成的! 只需要一个赋值语句即可!
享元原则
概念: 是程序设计的一个基本原则。 当我们需要在程序中频繁的用到一些元数据的时候, 此时, 我们可以提前将这些元数据准备好, 当需要的时候, 直接拿过来使用即可。 使用完成之后, 也不进行销毁, 以便下次继续使用。
包装类中的享元: 将常用到的基本数据类型对应的包装类对象,预先存储起来。 当使用到这些基本数据类型对应的包装类对象的时候, 可以直接拿过来使用, 不用再实例化新的对象了。
字符串与基本数据类型转换
基本数据类型转型字符串类型
概念: 基本数据类型, 转成字符串, 希望得到的结果是这个数值转成字符串的样式。 其实, 就是直接给这个数值添加上双引号。
方式1: 可以利用字符串拼接运算符完成。 当加号两端有任意一方是字符串的时候, 此时都会自动的把另一方也转成字符串, 完成字符串的拼接。 所以, 当需要把一个基本数据类型的数据转成字符串的时候, 只需要在另一端拼接上一个空的字符串即可。
int a = 10;
String str = a + "";
【推荐使用】方式2: 使用字符串的静态方法 valueOf 完成。
String str = String.valueOf(10);
方式3: 借助包装类的实例方法 toString 方法。
String str = Integer.valueOf(10).toString();
方式4: 借助包装类的静态方法 toString 方法。
String str = Integer.toString(10);
字符串类型转型基本数据类型
概念: 字符串类型转基本数据类型, 其实就是解析出这个字符串中的内容,转型成对应的基本数据类型的表示。
注意事项1: 基本数据类型转字符串肯定是没问题的, 但是由字符串类型转到基本数据类型的时候, 可能会出现问题。字符串中的内容, 不一定能够转成希望转换的基本数据类型。 如果转换失败, 会出现 NumberFormatException 异常。
注意事项2: 对于整数来说,字符串中如果出现了其他的非数字的字符, 都会导致转整数失败, 即便是小数点, 也不可以转。 这里并没有转成浮点数字, 再转整数的过程。
方式1: 使用包装类的静态方法 valueOf 方法
Integer num = Integer.valueOf("123");
方式2: 使用包装类的静态方法 parseXXX 方法。 这里的XXX就是要转换的基本数据类型。
int number = Integer.parseInt("123");
实现进制间的转换
-
把十进制转成其它进制
- Integer.toHexString() 转十六进制
- Integer.toOctalString() 转八进制
- Integer.toBinaryString() 转二进制
-
把其它进制转十进制
//第一个参数:数据-以字符串形式存储
//第二个参数:进制-转之前的进制
Integer.parseInt(数据,进制)
int i2 = Integer.parseInt("10100011",2);
System.out.println(i2);
常用类
常用类 Math
是一个数学类, 这个类中封装了很多用来做数学计算的方法。 当我们需要使用到数学计算的时候, 要能够想到这个类。 这个类中有很多封装好的数学公式, 而且, 都是静态方法, 方便调用。
属性 | 描述 | 值 |
---|---|---|
PI | 圆周率π | 3.14159265358979323846 |
E | 自然对数e | 2.7182818284590452354 |
常用方法
常用类Random
是一个专门负责产生随机数的类。 在Java中, Random类在 java.util 包中。 在使用之前,需要先导包。
其实, 随机数的产生, 是有一个固定的随机数算法的。 代入一个随机数种子, 能够生成一个随机数列。 但是由于算法是固定的, 因此会有一个“BUG”: 如果随机数的种子相同, 则生成的随机数列也完全相同。
常用方法
常用类BigInteger、BigDecimal
这两个类,都是用来表示数字的类。 BigInteger表示整型数字, BigDecimal表示浮点型数字。 这两个类, 可以用来描述非常、非常、非常大的数字。 例如整数, long是最大的表示范围, 但是即便是long型, 也有它表示不了的情况。 BigInteger就是可以表示任意大小的数字。
BigInteger: 表示整型数字, 不限范围。
BigDecimal: 表示浮点型数字,不限范围, 不限小数点后面的位数。
常用方法
常用类Date
是一个用来描述时间、日期的类。 在 java.util 包中!!!
注意:
- 比较Date和Data类
Date:日期类
Data:数据类,装的是二进制的数据
- 比较java.util.date和java.sql.date包
java.util.date 对应的是java的日期类型,包括年月日 时分秒
java.sql.date 对应的是数据库的日期类型 ,只包括 年月日如果需要数据类型转换,从java.sql.date转成java.util.date是自动类型转换,反之是强制类型转换
常用方法
常用类SimpleDateFormat*
是一个用来格式化时间的类。 使用这个类, 一般有两种操作:
- 将一个 Date 对象, 转成指定格式的时间字符串。
- 将一个指定格式的时间字符串, 转成 Date 对象。
常用时间格式
常用方法
parse 方法
会抛出一个编译时的异常。 在使用的时候, 目前, 直接使用一键修复(alt + Enter), 用try-catch 包围即可。将一个字符串, 按照指定的格式进行解析。 如果字符串中的时间格式, 和对象实例化的时候给定的格式不同, 此时会出现异常。
常用类Calendar
是一个用来描述时间、日期的类。 比Date的功能更加完善。 在Date类中, 有很方法都已经被废弃了。 用Caleendar类中的某些方法来替代。
常用方法
方法 | 参数 | 描述 |
---|---|---|
getInstance | 获取用来描述当前时间的Calendar子类对象, 并向 上转型为了Calendar类型。 Calendar类是一个抽象 类, 无法实例化对象。 | |
get | int | 通过指定的字段,获取字段对应的值。 字段的信 息, 通过Calendar类中定义的一些静态常量来获 取。 例如: Calendar.YEAR、Calendar.MONTH、 Calendar.DAY_OF_MONTH… |
set | int,int | 通过指定的字段,设置字段对应的值。 字段的信 息, 通过Calendar类中定义的一些静态常量来获 取。 例如: Calendar.YEAR、Calendar.MONTH、 Calendar.DAY_OF_MONTH… |
set | nt, int, int int, int, int, int, int int, int, int, int, int, int | 同时设置年月日信息 同时设置年月日时分信息 同时 设置年月日时分秒信息 |
getTime | 获取指定时间对应的Date对象 | |
setTime | Date | 通过一个Date对象,设置时间 |
getTimeInMillis | 获取当前时间戳 | |
setTimeInMillis | long | 通过时间戳设置时间 |
equals | Calendar | 判断两个日期是否相同 |
before | Calendar | 判断一个日期是否在另外一个日期之前 |
after | Calendar | 判断一个日期是否在另外一个日期之后 |
add | int, int | 对指定的字段进行加法, 增加指定的时间偏移量 |
System
System 类包含一些有用的类字段和方法。它不能被实例化。
在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环
境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
常用字段
字段 | 详情 |
---|---|
err | “标准”错误输出流。 |
in | “标准”输入流。 |
out | “标准”输出流。 |
常用方法
Runtime
运行时类,每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的Runtime 类实例。