常用类
包装类
八个基本数据类型对应的包装类
拆箱和装箱
System
String
StringBuilder
StringBuffer
Random
Math
Date,SimpleDateformat,Calendar
BigInteger,BigDecimal
包装类
因为java是一门面向对象的语言,但是基本数据类型在使用的时候没有创建对象的过程,这样在使用基本数据类型的时候就显得面向对象不是那么纯粹了。java在这个问题上进行了补充,创建了对应的包装类型(引用数据类型),以针对基本数据类型在创建对象上进行补充。
Integer
Integer是int的一个包装类型
package com.classes;
public class IntegerTest {
public static void main(String[] args) {
int a = 100;
/*
* Integer中有一个成员变量 value 是int类型 这个变量用来存放Integer代表的值
* 这个变量使用final修饰的 意味着Integer的值 是不能改变的
* 所以Integer的对象创建就是在给value赋值
*/
Integer integer = new Integer(100);
int f = integer;// 自动拆箱 使用方法 intValue 把对象中的value属性值赋值给了变量
/*
* 装箱的流程 通过Integer中的 Integer valueOf(int) 方法实现
* 如果 int的值在 -128 到127范围的值时,就直接从缓存数组中取值
* 如果在这个范围之外就直接new了新的Integer对象
*/
Integer b = 100;//自动装箱的过程 可以让int赋值给Integer
Integer c = 100;
System.out.println(b == c);
Integer d = -200;
Integer e = 200;
System.out.println(d == e);
//Integer类需要记忆的内容
//Integer.MAX_VALUE int的最大值
//Integer.MIN_VALUE int的最小值
// 重写后 判断了Integer的值是否相同
//d.equals(obj)
// 返回-1 表示比传进来的值小 0 相同 1 比传进来的值大
//d.compareTo(anotherInteger)
//将字符串转换为int
//Integer.parseInt(s);
//转换成不带符号的数字
//Integer.toUnsignedLong(-100)
// 转换为字符串
//Integer.toString(i)
//将一个数字转换成二进制
String binaryString = Integer.toBinaryString(200);
System.out.println(binaryString);
//将一个数字转换成八进制
// Integer.toOctalString(200);
//将一个数字转换成十六进制
// Integer.toHexString(200);
}
}
Byte
Byte是基本数据类型byte的包装类
package com.classes;
public class ByteTest {
public static void main(String[] args) {
/*
* Byte 在装箱的时候直接取缓存中的对象的值,而不会去创建对象
* 也就是说 Byte装箱后的值可以直接用==做判断
*/
Byte bytes = 10;
/*
* 实现原理和Integer类似,类中包含了一个byte类型的成员变量value,构造只是为了给这个成员变量赋值
* value 也使用了final来进行修饰,也就是说对象创建后值就不能再修改了
*/
bytes = new Byte((byte)10);
//字符串转换为Byte类型
// Byte.parseByte(s)‘
}
}
Short
Short 是基本数据类型short的包装类
package com.classes;
public class ShortTest {
public static void main(String[] args) {
/*
* 和Integer类似 ,在装箱的时候值在-128到127范围的值是 直接从缓存中取
* 在这个范围之外的值,就创建对象。所以最好不要使用==来做判断
*/
Short s = 10;
/*
* 类中包含了一个short类型的value的变量 使用了final修饰
* 对象创建后就无法修改值
*/
s = new Short((short)10);
//将字符串转换为short类型
// Short.parseShort(s)
}
}
Long
Long 是基本数据类型long的包装类
package com.classes;
public class LongTest {
public static void main(String[] args) {
/*
* 和Integer类似 ,在装箱的时候值在-128到127范围的值是 直接从缓存中取
* 在这个范围之外的值,就创建对象。所以最好不要使用==来做判断
*/
Long l = 100l;
/*
* 类中有一个long类型的变量 value 使用了final修饰
* 创建对象的时候,就是为了给这个value赋值,对象创建成功后,值无法再进行修改了
*/
l = new Long(100);
// 将字符串转换为long类型
// Long.parseLong(s)
/*
* 将值转换为对应进制的字符串
*/
/*Long.toBinaryString(i)
Long.toOctalString(i)
Long.toHexString(i)*/
}
}
Float
Float 是float的包装类
package com.classes;
public class FloatTest {
public static void main(String[] args) {
/*
* 在装箱的时候直接创建了新的对象,没有缓存实现
* 装箱以后都是新的对象
*/
Float f = 100f;
/*
* 类中有一个float类型的变量 value 使用 final修饰
* 对象创建后就无法在进行修改
*/
f = new Float(3.14);
//判断f是否位无穷
f.isInfinite();
//判断f是否为非数字
f.isNaN();
//判断f是否为有限的值
// Float.isFinite(f)
//判断参数是否为无穷
// Float.isInfinite(v)
//判断是否为非数字
// Float.isNaN(v)
//将字符串转换为float类型
// Float.parseFloat(s)
}
}
Double
Double 是基本数据类型double的包装类
package com.classes;
public class DoubleTest {
public static void main(String[] args) {
/*
* 在装箱的时候直接创建了新的对象,没有缓存实现
* 装箱以后都是新的对象
*/
Double d = 100d;
/*
* 类中有一个Double类型的变量 value 使用 final修饰
* 对象创建后就无法在进行修改
*/
d = new Double(3.14);
//判断d是否位无穷
d.isInfinite();
//判断d是否为非数字
d.isNaN();
//判断d是否为有限的值
// Double.isFinite(d)
//判断参数是否为无穷
// Double.isInfinite(v)
//判断是否为非数字
// Double.isNaN(v)
//将字符串转换为Double类型
// Double.parseDouble(s)
}
}
Boolean
Boolean 是基本数据类型 boolean的包装类
package com.classes;
public class BooleanTest {
public static void main(String[] args) {
/*
* 类中有两个常量 TRUE 和 FALSE
* 在装箱的时候就取两个常量其中一个值
*/
Boolean boolean1 = true;
/*
* 类中有一个boolean类型的变量 value 使用final进行修饰
* 构造的时候就是给value赋值
*/
Boolean boolean2 = new Boolean(true);
//字符串转换成boolean类型
// Boolean.parseBoolean(s)
/*
* 逻辑and 运算后的结果
*/
// Boolean.logicalAnd(a, b)
/*
* 或者运算后的结果
*/
// Boolean.logicalOr(a, b)
/*
* 相同为假 不同为真
*/
// Boolean.logicalXor(a, b)
}
}
Character
Character 是char的包装类型
package com.classes;
public class CharacterTest {
public static void main(String[] args) {
/*
* 装箱的时候, 0 到 127 直接使用了缓存中的值 对应ascii码表来处理
* ascii码表中不存在的字符,就创建新的对象
*/
Character character = 'a';
//将char转换为大写
// Character.toUpperCase(ch)
//将char转换为小写
// Character.toLowerCase(ch)
//判断char是否为大写
// Character.isUpperCase(ch)
//判断char是否为小写
// Character.isLowerCase(ch)
}
}
字符串
String
字符串是程序开发中使用的很多的一种类型,String 不是基本数据类型,但是又可以和基本数据类型包装类一样可以直接赋值来使用,所以这个类有点特殊
package com.classes;
import java.util.Arrays;
import java.util.Calendar;
public class StringTest {
public static void main(String[] args) {
/*
* 和基本数据类型装箱和拆箱是有区别的
* String中有一个char数组 使用了final修饰 所以String是不可变的
* String类本身使用了final修饰,这个类就不能被继承
* String的构造本质上就是在给value char数组赋值
*/
String str = "abc";//abc存在于常量池中,然后内存地址赋值给str
String str2 = new String("abc"); // abc存在于常量池中,堆中开辟了空间存放了abc的引用,然后把堆中的引用赋值给str2
//可以通过char数组创建对象
// String str3 = new String(chars);
//可以将byte数组通过指定的编码创建对象 UTF-8
// new String(bytes,charset);
String fileName = "ajklgsdfhpOAaDSF.jpg";
//字符串的长度
int length = fileName.length();
//将字符串转换成byte数组
byte[] bytes = fileName.getBytes();
//将字符串以指定的编码转换成byte数组
// byte[] bytes2 = fileName.getBytes("ISO-8859-1");
//将字符串转换为char数组
char[] charArray = fileName.toCharArray();
//拼接字符串,返回拼接后的结果
// fileName.concat(str2)
//判断字符串中是否包含指定的字符串
boolean contains = fileName.contains("a");
//返回字符串中指定索引的char值
// char c = fileName.charAt(index)
//判断是否以指定的字符串结尾
// fileName.endsWith(suffix)
//判断是否以指定的字符串开头
// fileName.startsWith(prefix)
//字符串判断相等使用equals
// fileName.equals(anObject)
//忽略大小写比较是否相同
// fileName.equalsIgnoreCase(anotherString)
//从左往右返回指定的字符串在原字符串的索引 如果不存在返回-1
int indexOf = fileName.indexOf("s");
//从指定的位置开始 从左往右返回指定的字符串在原字符串的索引 如果不存在返回-1
// fileName.indexOf(ch, fromindex)
//从右往左 返回指定的字符串在原字符串的索引 如果不存在返回-1
// fileName.lastIndexOf(str2)
//从指定的位置开始 从右往左 返回指定的字符串在原字符串的索引 如果不存在返回-1
// fileName.lastIndexOf(str2, fromIndex)
//是否为空的字符串 ""
// fileName.isEmpty()
//匹配正则表达式
// fileName.matches(regex)
//替换字符串 使用new替换old 返回替换后的结果
// fileName.replace(oldChar, newChar)
//支持正则表达式替换
// fileName.replaceAll(regex, replacement)
//以指定的符号分割字符串 如果分割的字符串在最前面会留下空串 如果在最后就不会留下空串
String[] split = fileName.split("a");
System.out.println(Arrays.toString(split));
// 从指定的位置开始到末尾截取字符串
// fileName.substring(beginIndex)
// 从指定的位置开始到指定的位置结束 截取字符串
// fileName.substring(beginIndex, endIndex)
//转换成小写
// fileName.toLowerCase()
//转换为大写
// fileName.toUpperCase()
//去除字符串的首尾空格
// fileName.trim()
//从char数组中复制出来转换为字符串
// String.copyValueOf(data)
// 从char数组中指定位置复制指定长度 转换为字符串
// String.copyValueOf(data, offset, count)
//格式化字符串 了解为主
Calendar c = Calendar.getInstance();
String s1 = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
System.out.println(s1);
}
}