JAVA基础05-数据包装类,JAVA常用类 介绍

目录

基本数据类型的包装类

定义

String是字符串类型

创建String类型的对象 

返回指定索引处的 char 值

返回某字符在字符串中出现的索引

替换

返回此字符串的长度

测试此字符串是否以指定的前缀开始

返回一个新的字符串

大小写转换

拆分字符串

字符串的创建及比较

字符串增强类

StringBuilder 和StringBuffer区别

StringBuilder

StringBuffer

三种类型的使用场景

练习

JAVA常用类

Math的方法

绝对值

返回最大/小值

随机数

正平方根

次幂

日期类型

日期格式化

Calendar类

定义

方法

设置当前时间

获取年/月/日/秒

练习

BigDecimal类


基本数据类型的包装类

定义

是基本数据类型的引用类型,提供基本数据类型的数据转换和数据操作的方法。

--byte Byte

--short Short

--int Integer

--long Long

--boolean Boolean

--float Float

--double Double

--char Character

实现基本数据类型和引用类型之间的转换

		// 1、包装类中的方法 "100"+120 数据转换
		int res = Integer.parseInt("100");
		int res1 = Integer.valueOf("11");
		System.out.println(res+200);
		System.out.println(res1+200);
		// 比较方法
		System.out.println(Integer.compare(10, 10));
		// 进制转换
		System.out.println(Integer.toBinaryString(10));
		System.out.println(Integer.toHexString(10));
		System.out.println(Integer.toOctalString(10));

自动装箱 将基本数据类型的数据封装为基本数据类型的包装类

自动拆箱 将基本数据类型的包装类拆封为基本数据类型的数据

		//2、自动装箱、自动拆箱
		int res2 = Integer.valueOf("110");//把包装类型的拆箱成为基本数据类型
		Integer res3 = res2;//把基本数据类型封装为包装类型

字符串String

String是字符串类型,是不可变类,并且是一个引用类型

创建String类型的对象 

String item = "hello";//方法一
String item = new String("hello");//方法二

返回指定索引处的 char 值

charAt(int index) ;

String str = "it is my hourse is!";
// 返回str中特定位置的字符
System.out.println(str.charAt(1));

返回某字符在字符串中出现的索引

返回指定字符在此字符串中第一次出现处的索引:

indexOf(int ch) ;

返回指定字符在此字符串中最后一次出现处的索引:

lastIndexOf(int ch) ;

		String str = "it is my hourse is!";
        // 返回某个字符的所在位置
		System.out.println(str.indexOf('i'));//从前面开始,返回第一个的索引
		System.out.println(str.indexOf("is"));//从前面开始,返回第一个的索引
		System.out.println(str.lastIndexOf('i'));//从后面开始,返回第一个的索引

替换

通过用 newChar 替换此字符串中出现的所有oldChar 得到的:

replace(char oldChar, char newChar);

		//替换
		str = str.replace('i', 'I');
		System.out.println(str);
		str = str.replaceAll("is", "IS");//全部is都替换为IS
		System.out.println(str);

返回此字符串的长度

length() ;


测试此字符串是否以指定的前缀开始

startsWith(String prefix);

	//判断是否以某个字符串作为开头
		System.out.println(str.startsWith("it"));

返回一个新的字符串

该字符串是此字符串的一个子字符串:

substring(int beginIndex);


将此字符串转换为一个新的字符数组

toCharArray();

		//获取当前的字符串的字符数组
		System.out.println(Arrays.toString(str.toCharArray()));

大小写转换

--使用默认语言环境的规则将此 String 中的所有字符都转换为小写:

toLowerCase();

--使用默认语言环境的规则将此 String 中的所有字符都转换为大写:

toUpperCase();

//大小写转换
		System.out.println(str.toUpperCase());
		System.out.println(str.toLowerCase());

拆分字符串

根据给定正则表达式的匹配拆分此字符串:

split(String regex);

	//分隔字符串
		String[] arr = str.split(" ");
		for (String string : arr) {
			System.out.println(string);
		}

字符串的创建及比较

public static void main(String[] args) throws UnsupportedEncodingException {
		//了解即可
		String str4 = new String("你好".getBytes(), "GBK");
		System.out.println(str4);
		// 1、如何创建字符串的对象
		String str = "hello";//直接给字面值
		String str1 = new String("hello");//通过构造器来创建字符串对象
		String str2 = "hello";//直接给字面值
		String str3 = new String("hello");//通过构造器来创建字符串对象
    
		//2、判断字符串是否一致? 
    	//==是判断两个数值是否相等【基本数据类型】  
    	//==在引用类型中是判断对象是否一致
		System.out.println(str==str1);
		System.out.println(str.equals(str1));//判断两个字符串数值是否相等使用equals方法
		System.out.println("---------");
		System.out.println(str==str2);//true \\常量池
		System.out.println(str1==str3);//false \\因为new出来的对象肯定是不相等的
		
		//两个字面值拼接,会创建一个新的字符串对象
		String str5 = "hel";
		String str6 = "lo";
		String str7 = str5+str6;
		System.out.println(str7==str);//false
	}

字符串增强类

//字符串的增强类的方法
public class StringUpperDemo {
	public static void main(String[] args) {
		// StringBuilder【线程不安全】 StringBuffer【线程安全】 操作方法是一致的
		StringBuilder sb = new StringBuilder("it is my hourse is!");
     	 1.获取(与string相同,这不做描述)
//		 *   char charAt(index)
//		 *   indexOf
			String substring(start,end)//格式
		 2.删除
//		 *   StringBuffer delete(begin,end)   包含头,不包含尾
			b =sb.delete(0, 3);
			System.out.println(sb);
		
//		 *   StringBuffer deleteCharAt(index)
			sb =sb.deleteCharAt(0);
			System.out.println(sb);
		
		 3.存储
//		 *   StringBuffer append() 追加未尾
			sb =sb.append(" me");
			System.out.println(sb);
			
//		 *   StringBuffer insert()
			sb =sb.insert(3, "me");
			System.out.println(sb);
        
		 4.修改(与string相同,这不做描述)
//		 *   replace()
		 5. 反转
//		 *   reverse()
			sb = sb.reverse();
			System.out.println(sb);
	}

StringBuilder 和StringBuffer区别

StringBuilder

定义:线程不安全的String增强类,StringBuilder 和 StringBuffer都是容器, 定义的api(方法)都相同

StringBuffer

定义

线程安全的String增强类。StringBuffer  是一个容器,称为字符串缓冲区,该字符串缓冲区可扩展final类  

特点

长度可变化; 可以操作多个数据类型;通过toString()转成String

注意:如果对字符串进行修改时,无需创建新对象!性能相对String较好

两者区别

1.StringBuilder没有线程安全(机制),而 StringBuffer有线程安全机制所以,StringBuilder性能较佳

2.StringBuilder版本较新


三种类型的使用场景

使用场景区别:

  1. 对于普通的操作,操作量不大时使用String;对于大量的更新操作,使用字符串的增强类
  2. --单线程:StringBuilder;--多线程:StringBuffer
  3. 速度性能上:String<StringBuffer <StringBuilder

练习

public class StringDemo1 {
	// 练习1:"hello world"字符串,逐个单词拆分,然后以大写输出(每次一个单词换行输出)
	public static void main(String[] args) {
		String str =  "hello world";
		//
		String[] strs =str.split(" ");
		//
		for (String string : strs) {
			System.out.println(string.toUpperCase());
		}
	}
	
	// 练习2:使用StringBuffer 往一个数值每隔三位(千位)插入一个','
	public static void main(String[] args) {
		StringBuffer sb =  new StringBuffer("388123456789");
		// 从低位开始插入,低三位开始,i大于0【避免个数能整数时在数值前面加上逗号】
		for (int i=sb.length()-3;i>0;i-=3) {
			sb.insert(i, ",");
		}
		System.out.println(sb);
	}
}

JAVA常用类

Math的方法

绝对值

--abs(a):返回 int 值的绝对值。

	//--绝对值
		System.out.println(Math.abs(-6));

返回最大/小值

--max(a,b):返回两个 int 值中较大的一个。

--min(a,b):返回两个int 值中较小的一个。

		//--最大值max、最小值min
		System.out.println(Math.max(6.5, 6));

随机数

--random() :返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。

		//--随机数 greaterthan or equal to 0.0 and less than 1.0. 默认给随机数的是浮点类型
		for(int i=0;i<=1000;i++) {
			System.out.println((int)(Math.random()*10)+1);
            //*10的范围也只是0~9,只有加1才能将范围扩大到:1~10
			System.out.println((int)(Math.random()*11));//0~10
		}

		//随机类
		Random ran = new Random();
		for(int i=0;i<=1000;i++) {
			System.out.println(ran.nextInt(10)+1);//提供种子值,该10即为种子值

正平方根

--sqrt(a) :返回正确舍入的 double 值的正平方根。

		//正平方根
		System.out.println(Math.sqrt(3));

次幂

--pow(a,b);返回a 的b次方

		public static void main(String[] args) {
		//pow方法,乘方
		System.out.println(Math.pow(2, 3));//2^3
		}
	}

日期类型

获取当前日期

<1>--Date date = new Date();

<2>--long item = System.currentTimeMillis();

Date date = new Date(item);

		// <1>创建时间对象,并且获取当前的系统时间
		Date date = new Date();
		System.out.println(date);
		// <2>-时间戳就是1970年1月1日到现今的总毫秒数
		Date date1 = new Date(System.currentTimeMillis());
		System.out.println(date1);

日期格式化

--创建SimpleDateFormat的对象:

SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

--使用:Date 格式化输出String字符串

String item = sm.format(new Date());

--String类型表示日期转换为java.util.Date

Date dItem = sm.parse("2017-07-07 16:48:14");

public static void main(String[] args) throws ParseException {
		// 时间格式化的类  24HH
    	//创建SimpleDateFormat的对象
		SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//使用:将date转换为字符串
		String time = sm.format(date);
		System.out.println(time);
		//将字符串转换为date;
    	//注意:一定要对应创建SimpleDateFormat的时间格式
		Date dateTime = sm.parse("2022-01-14 15:22:22");
		System.out.println(dateTime);
	}

Calendar类

定义

Calendar为一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。日历类的使用、能够比较精准地获取日期数据  年 、月、日 时、分、秒  周、星期等等的日期信息。

方法

获取Calendar类的实例对象

Calendar calendar = Calendar.getInstance();
//使用默认时区和语言环境获得一个日历。

设置当前时间

//法一
calendar.setTimeInMillis(System.currentTimeMillis());
//法二
calendar.set(Calendar.YEAR, 2018);
calendar.set(Calendar.MONTH, 7);
calendar.set(Calendar.DAY_OF_MONTH, 6);

获取年/月/日/秒

获取年份

calendar.get(Calendar.YEAR);

获取月份:(0~11)

calendar.get(Calendar.MONTH);

获取当前月份的日期:

calendar.get(Calendar.DAY_OF_MONTH);

获取当前时间的秒数:

 calendar.get(Calendar.SECOND);

		//1、如何获取Calendar  使用getInstance获取对象,得到当前时间信息
		Calendar c = Calendar.getInstance();
		//c.setTimeInMillis(System.currentTimeMillis());
		//
		c.set(Calendar.YEAR, 2021);
		//
		System.out.println(c.get(Calendar.YEAR));
		System.out.println(c.get(Calendar.MONTH));//0~11
		System.out.println(c.get(Calendar.DAY_OF_MONTH));
		System.out.println(c.get(Calendar.HOUR));
		System.out.println(c.get(Calendar.MINUTE));
		System.out.println(c.get(Calendar.SECOND));
		
		//获取今天是周几
		System.out.println(c.get(Calendar.DAY_OF_WEEK));//注意:周日是一周的开始{第一天}
		//获取这周是这个月的第几周
		System.out.println(c.get(Calendar.WEEK_OF_MONTH));
		//获取今天是今年的第几天
		System.out.println(c.get(Calendar.DAY_OF_YEAR));
		

练习

//题目:获取2020和2021年的母亲节的日期;tips:5月的第二个星期日  要求:输出时间格式为yyyy年MM月dd日
		c.set(Calendar.YEAR, 2021);
		c.set(Calendar.MONTH, 4);
		c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 2);
		c.set(Calendar.DAY_OF_WEEK, 1);
		
		Date date = c.getTime();
		SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd");
		System.out.println(sm.format(date));

BigDecimal类

定义:BigDecimal类是一个算术运算类,它可以给浮点类型的运算控制算术精度,但是要注意在创建对象是入参字符串类型的数据

public static void main(String[] args) {
		// 测试对比
		double item1 = 12.95983544;
		float item2 =   3.54872f;
		System.out.println(item1-item2);	// 输出答案:9.411115557034913 
    
		//使用BigDecimal来进行算术运算
    	//注意:参数必须得为字符串类型的数据
		BigDecimal b1 = new BigDecimal("1.2");//12.95983544
		BigDecimal b2 = new BigDecimal("3.0");//3.54872
    
		System.out.println(b1.subtract(b2));//减法//9.41111544
		System.out.println(b1.add(b2));//加法
		System.out.println(b1.multiply(b2));//乘法
		System.out.println(b1.divide(b2));//除法
		//获取b1数值
		System.out.println(b1.doubleValue());    	//返回double类型
		
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值