Java-day15(Java常用类)

news2024/11/16 2:41:37

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()方法
//字符数组转字符串:调用字符串的构造器

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/1033370.html

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

相关文章

用sublime测试正则表达式

1 打开sublime 2.使用ctrlf快捷键 3.开启如下功能 4.测试

什么是语法糖?Java中有哪些语法糖?

什么是语法糖&#xff1f;Java中有哪些语法糖&#xff1f; 语法糖 语法糖&#xff08;Syntactic Sugar&#xff09;&#xff0c;也称糖衣语法&#xff0c;是由英国计算机学家 Peter.J.Landin 发明的一个术语&#xff0c;指在计算机语言中添加的某种语法&#xff0c;这种语法对…

【操作系统笔记十三】Shell脚本编程

什么是 shell shell 就是命令解释器&#xff0c;用于解释用户对操作系统的操作&#xff0c;比如当我们在终端上执行 ls &#xff0c;然后回车&#xff0c;这个时候会由 shell 来解释这个命令&#xff0c;并且执行解释后的命令&#xff0c;进而对操作系统进行操作。 在 Centos…

初识软件工程

软件工程是一门涵盖软件开发、维护和管理的学科&#xff0c;它通过应用工程化的原则和方法来提高软件系统的质量和可靠性。在当今数字化和信息化的时代&#xff0c;软件工程对于现代社会的各个领域都具有至关重要的作用。 基本概念&#xff1f; 计算机系统中与硬件相互依存的一…

【力扣】300. 最长递增子序列 <动态规划>

【力扣】300. 最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2…

Wiki.js - 下一代的开源Wiki软件

简介&#xff1a;在众多开源的Wiki软件中&#xff0c;Wiki.js无疑是一个独特且现代的选择。基于Node.js构建&#xff0c;使用了最新的Web技术&#xff0c;Wiki.js为用户提供了一个美观且功能丰富的界面&#xff0c;同时还保留了强大的扩展性和自定义性。无论你是为个人、团队或…

一文掌握CodiMD安装与使用

简介&#xff1a;CodiMD 是一个基于 Markdown 语言的实时协作文档编辑器&#xff0c;它允许多个用户在同一个文档上进行实时编辑。CodiMD 的前身是 HackMD&#xff0c;但为了满足更开放的开源社区需求&#xff0c;CodiMD 作为其社区版本独立出来。 优势&#xff1a; 1. 开源且…

9+单细胞+实验验证,探讨单基因对癌细胞转移作用的思路方向

今天给同学们分享一篇单细胞实验的生信文章“Identification of RAC1 in promoting brain metastasis of lung adenocarcinoma using single-cell transcriptome sequencing”&#xff0c;这篇文章于2023年5月18日发表在Cell Death Dis期刊上&#xff0c;影响因子为9。 本研究旨…

2023研究生数学建模E题保姆级思路 出血性脑卒中临床智能诊疗

本次E题是一道J机器学习题目&#xff0c;难度也比较高&#xff0c;该题一般是有正确结果的&#xff0c;容易踩坑&#xff0c;不太建议小白选择&#xff0c;小白可以选择D题&#xff0c;D题思路也可以看另一篇文章&#xff0c;总的难度都不算低&#xff0c;这三道的难度接近&…

科目三基础四项(一)

​ 第一天&#xff0c;基础操作&#xff0c;仪表&#xff0c;方向&#xff0c;挡位 按照模块来 1、方向盘两手在两侧 ​ 编辑 转向时的角度&#xff0c;只用&#xff1a;向左540&#xff0c;向右180 向左打和向右打的角度要抵消&#xff0c;回正 掉头向左打满再回 注意…

【LeetCode热题100】--56.合并区间

56.合并区间 排序&#xff1a; 如果按照区间的左端点排序&#xff0c;那么在排完序的列表中&#xff0c;可以合并的区间一定是连续的&#xff0c;如下图所示&#xff0c;标记为蓝色、黄色和绿色的区间分别可以合并为一个大区间&#xff0c;它们在排完序的列表中是连续的 算法&a…

Learn Prompt-Midjourney 图片生成:快速开始

Discord 注册​ Midjourney 目前是在 Discord 频道上运行。我们可以通过 Discord 的机器人进行指令操作&#xff0c;最终返回图片。 我们可以直接点击进入Midjourney Discord频道。当然如果你直接搜索进入Midjourney的官网&#xff0c;你同样可以通过点击右下角的绿色按钮Joi…

vuepress+gitee免费搭建个人在线博客(无保留版)

文章目录 最终效果&#xff0c;一睹为快&#xff01;一、工具选型二、什么是VuePress三、准备工作3.1 node 安装3.2 Git安装3.3 Gitee账号注册 四、搭建步骤4.1 初始化VuePress4.2 安装VuePress4.3 初始化目录4.4 编写文章 五、部署到Gitee5.1 创建仓库5.2 个人空间地址设置4.3…

APK的反编译,签名,对齐

APK的反编译&#xff0c;签名&#xff0c;对齐 – WhiteNights Site 2023年9月22日 标签&#xff1a;Android, 应用开发 记录下相关的命令行参数。 APK的打包与解包 java -jar apktool.jar 首先&#xff0c;需要一个jar包&#xff0c;以我在用的为例&#xff1a;apktool_2.8.…

EasyWindow - Android 悬浮窗框架

官网 https://github.com/getActivity/EasyWindow 项目介绍 本框架意在解决一些极端需求&#xff0c;如果是普通的 Toast 封装推荐使用 Toaster 集成步骤 如果你的项目 Gradle 配置是在 7.0 以下&#xff0c;需要在 build.gradle 文件中加入 allprojects {repositories {/…

@DateTimeFormat 和 @JsonFormat 的详细研究

关于这两个时间转化注解&#xff0c;先说结论 一、介绍 1、DateTimeFormat DateTimeFormat 并不会根据得到其属性 pattern 把前端传入的数据转换成自己想要的格式&#xff0c;而是将前端的String类型数据封装到Date类型&#xff1b;其次它的 pattern 属性是用来规范前端传入…

jenkins自动化部署springboot、gitee项目

服务器需要安装jdk11、maven、gitee 1. jenkins安装 # yum源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo # 公钥 sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key # 安装 yum install jenkins如果yum源报…

java内嵌浏览器CEF-JAVA、jcef、java chrome

java内嵌浏览器CEF-JAVA、jcef、java chrome jcef是老牌cef的chrome内嵌方案&#xff0c;可以进行java-chrome-h5-桌面开发&#xff0c;下面为最新版本&#xff08;2023年9月22日10:33:07&#xff09; JCEF&#xff08;Java Chromium Embedded Framework&#xff09;是一个基于…

Websocket集群解决方案以及实战(附图文源码)

最近在项目中在做一个消息推送的功能&#xff0c;比如客户下单之后通知给给对应的客户发送系统通知&#xff0c;这种消息推送需要使用到全双工的websocket推送消息。 所谓的全双工表示客户端和服务端都能向对方发送消息。不使用同样是全双工的http是因为http只能由客户端主动发…

如何借用敏捷实现IT对数字化转型支持 | 2023佛山敏捷之旅成功举办

9月17日&#xff0c;2023年佛山之旅暨DevOps Meetup在佛山圆满落幕。本次大会以助力大湾区金融和互联网企业敏捷DevOps实施和效能提升为主题&#xff0c;吸引了150余位来自各地的金融和互联网企业相关从业人员齐聚一堂&#xff0c;共同探讨行业最佳实践、最新发展趋势以及最新应…