JAVA常用包装类

文章详细介绍了Java中的包装类,如Integer、Byte、Short、Long、Float、Double、Boolean和Character,以及它们与基本数据类型的装箱、拆箱操作。同时,提到了String类的特性和常用方法,如字符串的拼接、查找、替换、截取等。此外,还涵盖了数值转换和比较操作。
摘要由CSDN通过智能技术生成

常用类

包装类
	八个基本数据类型对应的包装类
	拆箱和装箱
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);
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员zhi路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值