Java-day16(Java常用类)

news2024/11/28 9:29:31

Java常用类

1.String

public class test1 {
	/*
	 * String:代表不可变的字符序列,底层使用char[]存放
	 * String是final的 
	 * */
		@Test
		public void test() {
			String str1 = "Java EE";
			String str2= "Java EE";
			
			String str3 = new String("Java EE");
			
			String str4 = "Java EE" + "Android";       
			String str5 = "Android";
			String str6 = str1 + str5;
			str5 = str5 + "Hadoop";
			String str7 = str6.intern();
			String str8 = "Java EEAndroid";
			System.out.println(str1 == str2);//true
			
			System.out.println(str1 == str3);//false
			System.out.println(str1.equals(str3));//true
			
			System.out.println(str4 == str6);//false
			System.out.println(str4.equals(str6));//true
			System.out.println(str4 == str7);//true
			System.out.println(str4 == str8);//true
		}
}

在内存中如何存放**在这里插入图片描述**

常用方法

需要熟练掌握

import org.junit.Test;

public class test1 {
	//String类的基本用法
	@Test
	public void test1() {
		String str1 = "abcdefgabcch";
		String str2 = "abc";
		String str3 = "cch";
		
		int length():返回字符串长度
		System.out.println(str2.length());//3
		
		char charAt(index):返回在指定index位置的字符,index从0开始
		System.out.println(str2.charAt(2));//c      
		
		boolean equals(Object obj):比较两个字符串是否相等
		System.out.println(str2.equals(str1));//false
		
		//int compareTo(String str):返回参与比较的前后两个字符串的ASCII码的差值,如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值。
		System.out.println(str2.compareTo(str1));
		
		//int indexOf(s):返回字符串s在当前字符串中首次出现的位置,若没有返回-1
		System.out.println(str1.indexOf(str2));
		
		//int lastIndexOf(s):返回字符串s在当前字符串中最后一次出现的位置,若没有返回-1
		System.out.println(str1.lastIndexOf(str2));
		
		//int indexOf(s,int star):返回字符串s在当前字符串中star位置开始首次出现的位置,若没有返回-1
		System.out.println(str1.indexOf(str2,3));
		
		//int lastIndexOf(s,int star):返回字符串s在当前字符串中star位置之前最后一次出现的位置,若没有返回-1
		System.out.println(str1.lastIndexOf(str2,12));
		
		//boolean startsWith(String abc):判断当前字符串是否以abc开始
		System.out.println(str1.startsWith("abc"));
		
		//boolean endsWith(String abc):判断当前字符串是否以abc结尾
		System.out.println(str1.endsWith("abc"));//false
		
		//boolean regionMatches(int fisted,String other,int otnered,int length):判断当前字符串从fisted开始的字串与另一个other字符串从otnered开始,length长度的字串是否equals。
		System.out.println(str1.regionMatches(9,str3,0,str3.length()));//true
		
		String substring(int substr):复制从当前字符串的substr位置开始到最后
		String str4 = str1.substring(6);
		System.out.println(str4);//gabcch
		
		//String substring(int substr,int end):复制从当前字符串的substr位置开始到end-1的位置结束(注意:范围是左闭右开)
		String str5 = str1.substring(6,9);
		System.out.println(str5);//gab
		
		//String replance(char OldChar,char newChar):将当前字符串中的某些旧字符换成新字符(原来的字符串无变化)
		System.out.println(str1);
		String str6 = str1.replace("def", "ggg");
		System.out.println(str6);
		
		//String trim():将当前的字符串首尾空格去掉
		String str7 = "  aa  cc   ";
		String str8 = str7.trim();
		System.out.println(str7);
		System.out.println(str8);
		
		//String concat(String str):连接当前字符串与str
		String str9 = str1.concat(str8);
		System.out.println(str1);
		System.out.println(str9);
		
		System.out.println();
		String[] split(String str):将当前字符串按str方式进行切割
		String str10 = "hello _ jhji kkjhi _ j*";
		String[] strs = str10.split(" ");
		for(int i = 0;i < strs.length;i++) {
			System.out.print(strs[i]);
		}		
	}

练习
题一:模拟trim方法,去除字符串两端的空格

public class test2{
	public static void main(String[] args) { 
		String str1 = "  hello world ";
		System.out.print(new StringDemo().myTrim(str1));
	}
}
class StringDemo{
	public  String myTrim(String str) {
		int start = 0;
		int end = str.length() - 1;
		while(start < end && str.charAt(start) == ' ') {
			start++;
		}
		while(start < end && str.charAt(end) == ' ') {
			end--;
		}
		return str.substring(start,end + 1);
	}
}

题二:让一个字符串指定的位置反转

public class test3{
	public static void main(String[] args) {     
		String str1 = "abcdefghijklmn";
		test3 t = new test3();
		System.out.println(t.reverseString(str1,1,4));
	}
	public static String reverseString(String str,int start,int end) {
		char[] c = str.toCharArray();
		return reverseArray(c,start,end);
	}
	public static String reverseArray(char[] c,int start,int end) {
		for(int i = start,j = end;i < j;i++,j--) {
			char temp = c[i];
			c[i] = c[j];
			c[j] = temp;
		}
		//字符数组转字符串
		return new String(c);
	}
}

题三:获取一个字符串在另一个字符串中出现的次数

public class test4{
	public static void main(String[] args) {   
		String str1 = "abdddcddefghddijklddmn";
		String str2 = "dd";
		test4 t = new test4();
		System.out.println(t.getTime(str1,str2));
	}
	public int getTime(String str1,String str2) {
		int count = 0;
		int len;
		while((len = str1.indexOf(str2)) != -1) {
			count++;
			str1 = str1.substring(len + str2.length());
		}		
		return count;
	}
}

题四:获取两个字符串中最大相同子串
提示:将短的串进行长度依次递减的子串与较长的串进行比较

public class test5{
	public static void main(String[] args) {      
		String str1 = "abdddcddefghddijklddmn";
		String str2 = "dijkldsdfyuiddefghu";
		test5 t = new test5();
		System.out.println(t.getMaxString(str1,str2));
	}
	public List<String> getMaxString(String str1,String str2) {
		String maxStr = (str1.length() > str2.length()) ? str1 : str2;
		String minStr = (str1.length() < str2.length()) ? str1 : str2;
		int len = minStr.length();
		List<String> list = new ArrayList<String>();
		for(int i = 0;i < len;i++) {
			for(int x = 0,y = len - i;y <= len;x++,y++) {
				String str = minStr.substring(x,y);
				if(maxStr.contains(str)) {
					list.add(str);
				}
			}
			if(list.size() != 0) {
				return list;
			}
		}
		return null;
	}
}

题五:对字符数组进行自然排序
提示:串变成数组;Arrays.sort();数组转串

public class test6{
	public static void main(String[] args) {       
		String str1 = "hello Ande";
		test6 t = new test6();
		System.out.println(t.sort(str1));
	}
	public String sort(String str) {
		char[] c = str.toCharArray();//字符串转数组
		Arrays.sort(c);//数组排序
		return new String(c);//数组转字符串
	}
}
String与包装类(基本数据类型),字节数组的转换

1.字符数组与基本数据类型,包装类的转换
//字符串转基本数据类型,包装类:调用相应包装类的parseXxx(String str)方法
//基本数据类型,包装类转字符串:调用字符串的重载的valueOf()方法
2.字符串与字节数组的转换
//字符串转字节数组:调用字符串的getBytes()方法
//字节数组转字符串:调用字符串的构造器
3.字符串与字符数组的转换
//字符串转字符数组:调用字符串的toCharArray()方法
//字符数组转字符串:调用字符串的构造器
4.String类与StringBuffer类的转换
//String类转换StringBuffer类:使用StringBuffer的构造器new StringBuffer(String str)  
//StringBuffer类转换 String类:使用StringBuffertoString()方法

public class test7 {

	public static void main(String[] args) {                           
		//1.字符数组与基本数据类型,包装类的转换
		//字符串转基本数据类型,包装类:调用相应包装类的parseXxx(String str)方法
		String str1 = "1234";
		int i = Integer.parseInt(str1);
		System.out.println(i);
		
		//基本数据类型,包装类转字符串:调用字符串的重载的valueOf()方法
		//法一:
		String str2 = i + "";
		//法二:
		str2 = String.valueOf(i);
		System.out.println(str2);
		System.out.println();
		
		//2.字符串与字节数组的转换
		//字符串转字节数组:调用字符串的getBytes()方法
		byte[] c = str2.getBytes();
		for(int j = 0;j < c.length;j++) {
			System.out.println((char)c[j]);
		}
		System.out.println();
		
		//字节数组转字符串:调用字符串的构造器
		String str3 = new String(c);
		System.out.println(str3);
		System.out.println();
		
		//3.字符串与字符数组的转换
		//字符串转字符数组:调用字符串的toCharArray()方法
		String str4 = "你好,世界";
		char[] c1 = str4.toCharArray();
		for(int k = 0;k < c1.length;k++) {
			System.out.println(c1[k]);
		}
		System.out.println();
		
		//字符数组转字符串:调用字符串的构造器
		String str5 = new String(c1);
		System.out.println(str5);
	}
}

2.StringBuffer

java.lang.StringBuffer代表可变长度的字符序列,可以对字符串内容进行修改
StringBuffer是一个容器
在这里插入图片描述

添加:append() 删除:delete()
修改:setCharAt(int index,char ch)replace(int index1,int index2, String str)
查:charAt() 插入:insert(int index,String str)
反转:reverse() 长度:length()
例:
public class test8 {

@Test
public void test1() {
	StringBuffer sb = new StringBuffer();
	System.out.println(sb.length());
	sb.append("assd").append("122234234");//添加
	System.out.println(sb);
	sb.insert(3, " hello ");//插入
	System.out.println(sb);
	sb.reverse();//反转
	System.out.println(sb);
	sb.delete(0, 5);//删除
	System.out.println(sb);
	char sb1 = sb.charAt(4);//查找索引处的字符
	System.out.println(sb1);
	sb.setCharAt(4,'g');//修改(单个字符)
	System.out.println(sb);
	sb.replace(1, 4, "123");//修改/取代(字符串)
	System.out.println(sb);
}

}

3.StringBuilder

java.lang.StringBuilder代表可变长度的字符序列,JDK5.0之后新加的特性
线程不安全,效率要高于StringBuffer
效率比较:StringBuilder > StringBuffer > String

4.System类时间

currentTimeMillis()用于计算时间差(当前时间与1970年1月1日0时0分0秒之间的时间差,毫秒为单位)

public class test9 {

	public static void main(String[] args) {        
		System.out.println(System.currentTimeMillis());
	}
}

5.Date类(java.util.Date及子类java.sql.Date

表示特定的瞬间,精确到毫秒
构造方法:
Date()无参数创建的对象获取的是当前时间

常用方法:

toString() ; getTime()  

例:

public class test10 {
	@Test
	public void test1() {
		Date d1 = new Date();
		System.out.println(d1.toString());//Fri Sep 22 21:40:16 CST 2023 
		System.out.println(d1.getTime());//1695390670262
		Date d2 = new Date(1695390670262L);
		System.out.println(d2.toString());
//		java.sql.Date d2 = new java.sql.Date(6543213456L);
//		System.out.println(d2.toString());//1970-03-18
	}
}

6.SimpleDateFormat

Date类的API不易于国际化,大部分被废弃,java.text.SimpleDateFormat类是不与语言环境有关的方式来格式化和分析日期的具体类
它允许进行格式化(日期–>文本{SimpleDateFormat类的format()方法}),解析(文本 --> 日期{SimpleDateFormat类的parse方法})
无参数构造器会用默认的模式和语言环境创建对象
例:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.junit.Test;

public class test10 {
	@Test
	public void test2() throws ParseException {
		//格式化1
		SimpleDateFormat sdf = new SimpleDateFormat();
		String date = sdf.format(new Date());        
		System.out.println(date);//默认格式:23-9-22 下午10:08
		//格式化2:按照指定的patten进行格式化
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		String date1 = sdf1.format(new Date());
		System.out.println(date1);//2023-09-22 10:16:40
		
		//3.解析
		Date date2 = sdf.parse("23-9-22 下午10:08");
		System.out.println(date2);//Fri Sep 22 22:08:00 CST 2023
		
		date2 = sdf1.parse("2023-09-22 10:16:40");
		System.out.println(date2);//Fri Sep 22 10:16:40 CST 2023		
	}
	//3天打鱼两天晒网(从1990-01-01开始,date2>date1)
	public int getDays(String date1,String date2) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date d1 = sdf.parse(date1);
		Date d2 = sdf.parse(date2);
		long milliTime  = d2.getTime() - d1.getTime();
		return (int)milliTime/1000/3600/24 + 1;
	}
	@Test
	public void test3() throws ParseException {
		String str1 = "1990-01-01";
		String str2 = "1990-10-03";
		int dates = getDays(str1,str2);
		if(dates % 5 == 0 || dates % 5 == 4) {
			System.out.println(str2 + "  渔夫在晒网");
		}else {
			System.out.println(str2 + "  渔夫在打鱼");
		}
	}
}

7.Calendar类(日历类)

抽象基类,主要用于完成日期字段之间相互操作的功能
获取实例:1.使用Calendar.getlnstance()方法;2.调用其子类GregorianCalendar的构造器
在这里插入图片描述

例:

@Test
public void test4() {
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day);//12 返回今天是这个月的第几天

c.add(Calendar.DAY_OF_MONTH,2);
day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day);//14

c.set(Calendar.DAY_OF_MONTH,29);
Date d = c.getTime();
System.out.println(d);//Fri Sep 29 23:10:10 CST 2023

}

8.Math

在这里插入图片描述

9.BigInteger类与BigDecimal

在这里插入图片描述

在这里插入图片描述

例:

@Test
	public void test5() {
		BigInteger bi = new BigInteger("1234565432");
		BigDecimal bd = new BigDecimal("12345.213");
		BigDecimal bd2 = new BigDecimal("11");
		
		System.out.println(bi);
		//System.out.println(bd.divide(bd2));
		System.out.println(bd.divide(bd2,BigDecimal.ROUND_HALF_UP));  
		System.out.println(bd.divide(bd2,15,BigDecimal.ROUND_HALF_UP));

感谢大家的支持,关注,评论,点赞!
参考资料:
尚硅谷宋红康20天搞定Java基础下部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自学WEB服务器搭建01-安装Express+Node.js框架完成Hello World!

一、前言&#xff0c;网站开发扫盲知识 1.网站搭建开发包括什么&#xff1f; 前端、后端&#xff08;服务端&#xff09;数据库 前端开发主要涉及用户界面&#xff08;UI&#xff09;和用户体验&#xff08;UX&#xff09;&#xff0c;负责实现网站的外观和交互逻辑。前端开发…

强引用,弱引用,软引用,虚引用它们有什么区别?你知道吗?

目录 1. 先简单了解JVM内存模型 2. 强引用类型解析 2.1 强引用理论解释 2.2 强引用代码演示 3. 软引用类型解析 3.1 软引用理论解释 3.2 软引用与强引用的区别&#xff1f; 3.3 软引用代码展示 3.4 软引用的使用场景&#xff1f; 4. 弱引用类型解析 4.1 弱引用理论解…

Windows无法安装到这个磁盘怎么办?

在固态硬盘&#xff08;SSD&#xff09;上安装Windows 11/10/8/7会使您的计算机运行速度更加快速&#xff0c;程序响应速度更加迅捷&#xff0c;如果您遇到了和上述案例相似的情况&#xff0c;Windows无法安装到固态硬盘上&#xff0c;也不用太过苦恼&#xff0c;造成此问题的原…

iOS设备自动备份软件哪个更好用?

备份是在使用iOS设备时经常用到一个功能。有很多种方法可以自动备份iOS设备&#xff0c;有通过iCloud进行自动备份的方法&#xff0c;有通过iTunes进行的&#xff0c;而今天小编再给大家介绍一个通过iOS设备管理软件iMazing进行自动备份的方法。这三种方法究竟哪一个更适合大家…

ElasticSearch自学笔记

es学习内容 day01 概念区别 Mysql和es概念对比 mysql:擅长事务类型的操作&#xff0c;可以确保数据的安全和一致性ES:擅长海量数据的搜索&#xff0c;分析和计算 mapping 属性 创建index的时候值为true就是参与搜索 索引库修改 PUT /库名/_mapping 字段名必须是新字段名文…

3dmax渲染内存不足,这样解决!

在3dmax工作时显示以下错误消息&#xff0c;3ds Max 中“发生内存不足错误”或者是3dmax渲染内存不足&#xff0c;可能还注意到系统性能很慢。 3dmax渲染内存不足原因&#xff1a; 发生此错误的原因是计算机在完成您请求的操作之前耗尽了可用内存。执行任何过程时都可能会出…

DP7340——192KHz双声道输入24位AD 转换器

DP7340是一款完整的采样、模数音频信号转换、抗混叠滤波的芯片&#xff0c;在串行格式下以每声道最高200kHz采样率高达24位宽&#xff0c;并支持大部分的音频数据格式。 DP7340基于一个带线性模拟低通滤波器的五阶Multi-BitΔ∑调制器&#xff0c;自动检测信号频率和主时钟频率…

记:CN 470-510MHz Band

目录 CN470-510 序头格式 CN470-510频道频率 CN470-510 数据速率和终端输出功率编码 CF470-510 JoinResp CFList CN470-510 LinkADRReq命令 CN470-510 最大载荷大小 CN470-510接收窗口 CN470-510默认参数 CN470-510 序头格式 应使用以下同步字&#xff1a; 调制同步字…

Pyside6:开发一个自适应的图片控件

在Qt中最简单展示图片用的控件是QLabel&#xff0c;但这个控件使用起来非常不方便&#xff0c;没有添加自适应的时候&#xff1a; 可以发现该图片是按真实像素来展示的&#xff0c;因此图片如果过大&#xff0c;只能展示局部。那么添加自适应后&#xff0c;变化又会出现&#x…

简单但好用:4种Selenium截图方法了解一下!

前言 我们执行UI自动化操作时&#xff0c;大多数时间都是不在现场的&#xff0c;出现错误时&#xff0c;没有办法第一时间查看到&#xff0c;这时我们可以通过截图当时出错的场景保存下来&#xff0c;后面进行查看报错的原因&#xff0c;Selenium中提供了几种截图的方法&#…

spring bean实例化过程及顺序

spring bean的初始化从doCreateBean方法开始&#xff0c;依次会调用下面三个方法执行bean的初始化。大部分方法都在AbstractAutowireCapableBeanFactory类中。 实例化 createBeanInstance()方法根据BeanDef获取bean对应的class通过反射调用构造函数进行bean的实例化。 这里会…

C语言的stdio.h的介绍

C语言的stdio.h的介绍 C语言的stdio.h的介绍 C语言的stdio.h的介绍C语言stdio.h的介绍 C语言stdio.h的介绍 这个含义是导入标准输入输出库 包含头文件.h&#xff0c;std标准库&#xff0c;io是input output输入输出库 <>代表系统库&#xff0c;自定义的话用""…

Android Jetpack Compose之确定重组范围并优化重组

目录 1.概述2.确定Composable重组的范围3.优化重组的性能3.1 Composable 位置索引3.2 通过Key添加索引信息3.3 使用注解Stable优化重组 1.概述 前面的文章提到Compose的重组是智能的&#xff0c;Composable函数在进行重组时会尽可能的跳过不必要的重组&#xff0c;只对需要变化…

C语言中结构体,枚举,联合相关介绍

本次重点&#xff1a; 1、结构体 &#xff1a; &#xff08;1&#xff09;结构体类型的声明 &#xff08;2&#xff09;结构的自引用 &#xff08;3&#xff09;结构体变量的定义和初始化 &#xff08;4&#xff09;结构体内存对齐 &#xff08;5&#xff09;结构体传参 …

干细胞液氮容器选择与使用

干细胞液氮容器的使用非常重要&#xff0c;以确保干细胞样品在冷冻和储存过程中的有效性和安全性。以下是使用干细胞液氮容器时需要注意的事项&#xff1a; 1、容器选择&#xff1a;选择合适的容器非常重要。容器应具有良好的密封性能和耐腐蚀性&#xff0c;以避免外部空气和污…

01-Zookeeper特性与节点数据类型详解

上一篇&#xff1a; 在了解Zookeeper之前&#xff0c;需要对分布式相关知识有一定了解&#xff0c;什么是分布式系统呢&#xff1f;通常情况下&#xff0c;单个物理节点很容易达到性能&#xff0c;计算或者容量的瓶颈&#xff0c;所以这个时候就需要多个物理节点来共同完成某项…

Oracle VM VirtualBox安装并下载安装CentOS7

Oracle VM VirtualBox安装并下载安装CentOS7 Oracle VM VirtualBox下载CentOS创建虚拟机 Oracle VM VirtualBox VM下载链接 https://www.oracle.com/cn/virtualization/virtualbox/ 点击链接直接下载就行&#xff0c;下载完默认安装或者更改一下安装目录。 下载CentOS http://…

服务网格概述

引言 2016 年前后&#xff0c;"服务网格"这个词出现在微服务、云计算和 DevOps 的领域。Buoyant 团队在 2016 年用这个词来解释他们的产品 Linkerd。服务网格的到来主要是由于 IT 领域内的一场风暴。开发人员开始使用多语言&#xff08;polyglot&#xff09;方法构建…

古彝文识别:文化遗产的数字化之旅

目录 &#x1f345;前言&#x1f353;古彝文介绍&#x1f353;古彝文识别的重难点&#x1f352;原籍难以获取&#xff0c;传统翻译过程繁琐&#xff0c;周期长。&#x1f352;版式多样&#xff0c;笔画相近。&#x1f352;图像质量差&#xff0c;手写识别难。&#x1f352;古彜…

第二证券:迎政策助力,新型工业化爆发,德恩精工3日涨超60%

新式工业化概念26日盘中大幅拉升&#xff0c;到发稿&#xff0c;德恩精工、精伦电子、天永智能等涨停&#xff0c;固高科技涨约8%&#xff0c;亚威股份涨逾6%&#xff0c;金自天正、创世纪涨约5%。 值得注意的是&#xff0c;精伦电子已接连5个交易日涨停&#xff0c;公司昨日晚…