JAVA学习笔记28(常用类)

news2024/12/23 3:19:42

1.常用类

1.1 包装类

1.包装类的分类

​ 1.针对八中基本数据类型相应的引用类型–包装类

​ 2.有了类的特点,就可以调用类中的方法

在这里插入图片描述

2.包装类和基本数据类型的转换

​ *装箱:基本类型 --> 包装类型

//手动装箱
int n1 = 100;
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);

//自动装箱
//int -> Integer
int n2 = 200;
Integer integer2 = n2;

​ *拆箱:包装类型 --> 基本类型

//手动拆箱
//Integer -- > int
int i = integer.intValue();

3.包装类型和String类型的相互转换

//包装类(Integer) ->String
Integer i = 100;//自动装箱
//方式1
String str1 = i + "";

//方式2
String str2 = i.toString();

//方式3
String str3 = String.valueOf(i);

//String -> 包装类(Integer)
//方式1
String str4 = "12345";
Integer i2 = Integer.parseInt(str4);//自动装箱

//方式2
Integer integer = new Integer(str4);	//构造器
    

4.Integer和Character常用的方法

System.out.println(Integer.MIN_VALUE);//返回最小值
System.out.println(Integer.MAX_VALUE);//返回最大值

System.out.println(Character.isDigit('a'));//判断是不是数字
System.out.println(Character.isLetter('a'));//判断是不是字母
System.out.println(Character.isUpperCase('a'));//判断是不是大写
System.out.println(Character.isLowerCase('a'));//判断是否为小写

System.out.println(Character.isWhitespace('a'));//判断是不是空格
System.out.println(Character.toUpperCase('a'));//转成大写
System.out.println(Character.toLowerCase('A'));//转成小写

​ *valueOf范围为-128 —127,否则就会new Integer(xx);

​ *如果xx在IntegerCache.low(-128)~IntegerCache.high(127),就直接从数组返回

1.2 String类

​ *String 对象用于保存字符串

​ *字符串常量对象是用双引号括起来的字符序列

​ *字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节

​ *String类常用构造器

String s1 = new String();
String s2 = new String(String original);
String s3 = new String(char[] a);
String s4 = new String(char[] a,int startIndex,int count)

1.创建String对象的两种方式

1.直接赋值
String s = "hspedu";
2.调用构造器
String s2 = new String("hspedu");

在这里插入图片描述

2.字符串的特性

​ 1.String是一个final类,代表不可变的字符序列

​ 2.字符串是不可变的,一个字符串对象一但被分配,其内容不可变。(如果想要改变就是直接更改指向地址)

在这里插入图片描述

3.String类的常见方法

​ *String类是保存字符串常量的,每次更新都需要重新开辟空间,效率较低,因此还提供了StringBuilder和StringBuffer来增强String的功能

1.equals

//区分大小写,判断内容是否相等

直接用==号的话,判断的是地址是否相同

str1.equals(str2);
2.equalsIgnoreCase

//忽略大小写的判断内容是否相等

str1.equalsIgnoreCase(str2);
3.length

//获取字符的个数,字符串的长度

str1.length();
4.indexOf

//获取字符在字符串中第一次出现的索引,索引从0开始,如果找不到,返回-1

str1.indexOf("@");	//@符号第一次出现的位置
5.lastIndexOf

//获取字符在字符串中最后一次出现的索引,索引从0开始,如找不到,返回-1,同时查找两个字符则返回第一个字符的位置

6.substring

//截取指定范围的字串

String name = "hello,wisth";
//下面name.substring(6) 从索引6开始截取后面所有的内容
System.out.println(name.substring(6));	//截取后面的字符
System.out.println(name.substring(0,5));	//表示从索引0开始截取,截取到索引 5-1=4的位置,5不包括
7.trim

//去前后空格

8.charAt

//获取某索引处的字符,注意不能使用Str[index]这种方式

str1.charAt(0);	//获取字符串0号位置的字符
9.toUpperCase

//转换成大写

String s = "hello";
System.out.println(s.toUpperCase());
10.toLowerCase

//转换成小写

11.concat

//拼接字符串

String s1 = "宝玉";
s1 = s1.concat("123").concat("456").concat("789");
12.replace

//替换字符串中的字符

s1 = s1.replace("123","789");	//把所有的123替换成789
//s1.replace() 方法执行后,返回的结果才是替换过的
//replace对s1没有任何影响
String s11 = s1.replace("123","789");
13.split

//分割字符串,对于某些分割字符,我们需要转义比如 | \\等,两个斜杠表示一个斜杠

String poem = "锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦";
String[] split = poem.split(",");	//以,为标准对poem进行分割,返回一个数组
for(int i =0;i<split.length;i++)
{
	System.out.println(split[i]);
}
14.toCharArray

转成字符数组

s = "happy";
char[] chs = s.toCharArray();
for(int i =0;i < chs.length;i++)
{
	System.out.println(chs[i]);
}
15.compareTo

比较两个字符串的大小

//如果前者大,则返回正数,后者大,则返回负数,如果相等,则返回0

​ 1.如果长度相同,并且每个字符也相同,返回0

​ 2.如果长度相同或者不相同,但是比较时,可以区分大小

​ 就返回 if ( c1 != c2) {

​ return c1 - c2;

​ }

​ 3.如果前面的部分都相同,就返回 str1.len - str2.len

String a = "jcck";
String b = "jack";
System.out.println(a.compareTo(b));		//返回值是'c'-'a' = 2的值
16.format

格式字符串,用占位符填充

1.占位符%d,%s,%.2f,%c

2.这些变量由后面的变量来替换

3.%d 用整数替换

4.%s 表示由后面的字符串替换

5.%.2f 用小数来替换,替换后,保留两位小数,并进行四舍五入的处理

6.%c 用char类型数据替换

String str2 = String.format("我的姓名是%s 年龄是 %d,成绩是%.2f 性别是 %c,希望大家喜欢我", name,age,score,gender);

//或者
String formatStr = "我的姓名是%s 年龄是 %d,成绩是%.2f 性别是 %c,希望大家喜欢我";
    
String info2 = String.format(formatStr,name,age,score,gender)    

1.3 StringBuffer类

​ *StringBuffer代表可变字符序列,可以对字符串内容进行增删

​ *很多方法与String相同

​ *StringBuffer是一个容器

StringBuffer stringBuffer = new StringBuffer(“hello”);

1.StringBuffer构造器

//1.创建一个大小为16的char[],用于存放字符内容
StringBuffer stringBuffer = new StringBuffer();

StringBuffer stringBuffer1 = new StringBuffer("123");

//2.通过构造器指定char[]大小
StringBuffer stringBuffer2 = new StringBuffer(100);

//3.通过给一个String创建一个StringBuffer,此时char[]大小就是hello.length()+16
StringBuffer hello = new StringBuffer("hello");

2.StringBuffer和String的转换

1.String —> StringBuffer

String str = "hello tom";
//1.使用构造器
//返回的才是StringBuffer对象,对str本身没有影响
StringBuffer stringBuffer = new StringBuffer(str);

//2.使用append方法
StringBuffer stringBuffer1 = new StringBuffer();
StringBuffer1 = stringBuffer1.append(str);

2.StringBuffer —> String

StringBuffer stringBuffer3 = new StringBuffer("小吴");
//1.使用toString方法
String s= stringBuffer3.toString();

//2.使用构造器来搞定
Stirng s1 = new String(stringBuffer3);

3.常用方法

1.append //增加

2.delete //删除

s.delete(11,14);
//删除11~14的字符 [11,14),不包括14号位置的字符

3.replace //替换

s.replace(9,11,"小树苗");
//使用小树苗替换索引9-11的字符,不包括11,如果9-10为两个字符,则用小树苗替换这两个字符

4.indexOf //查找

5.insert //插入

s.insert(9,"赵明");
//在索引为9的位置插入“赵明”,原来索引为9的位置内容自动后移

1.4 StringBuilder类

​ *一个可变的字符序列,此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全),该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,如果可能,建议优先采用该类,因为大多数实现中,它比StringBuffer快

​ *在StringBuilder上主要操作是appends和insert方法,可重载这些方法,以接受任意类型的数据

​ *String,StringBuffer,StringBuilder比较

在这里插入图片描述
在这里插入图片描述

1.5 Math类

​ *Math类包含用于执行基本数学运算的方法,如初等指数,对数,平方根和三角函数

1.abs

//绝对值

int a = Math.abs(-9);

2.pow

//求幂

double pow = Math.pow(2,4);//2的四次方

3.ceil

//向上取整(转成double)

double pow = Math.ceil(-3.0001);//返回-3

4.floor

//向下取整(转成double)

double pow = Math.floor(3.0001);//返回3

5.round

//四舍五入

long round = Math.round(-5.001);

6.sqrt

//求开方

double sqrt = Math.sqrt(9.0);

7.random

//求随机数


8.max

//求两个数的最大值

max(1,14);

9.min

//求两个数的最小值


1.6 Arrays类

1.toString

//1.toString 返回数组的字符串形式
Arrays.toString(arr);

Integer[] integers = {1,20,90};
System.out.println(Arrays.toString(integers));

2.sort

//排序

Integer arr[] = {1,-1,7,0};
//进行排序
Arrays.sort(arr,new Comparator());	//comparator返回的值大于0则升序(冒泡排序),小于0则降序

//sort排序代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.binarySearch

//通过二分搜索法进行查找,要求必须排好序

Integer[] arr = {1,2,90,123,567}

//数组为有序的才可以使用
//如果数组中不存在该元素,就返回-1
int index = Arrays.binarySearch(arr, 3);

​ *key not found 返回 - (应该在的位置+1)

4.copyOf

​ *从arr数组中,拷贝arr.length个元素到newArr数组中

​ *如果拷贝的长度 > arr.length就在新数组的后面增加null

//数组元素的复制

Integer[] newArr = Arrays.copyOf(arr, arr.length);

5.fill

//数组元素的填充

//用99替换原来的元素

Integer[] num = new Integer[]{9,3,2};
Arrays.fill(num, 99);

6.equals

//比较两个数组元素内容是否完全一致

boolean equals = Arrays.equals(arr,arr2);

7.asList

//将一组值,转换成list

List<Integer> asList = Arrays.asList(2,3,4,5,6,1);

System.out.println("asList=" + asList);

1.7 System类

1.exit

//退出当前程序

System.exit(0);
//0表示一个状态,正常状态

2.arrays.copy

//复制数组元素,适合底层调用,一般使用Arrays.copyOf完成复制数组

int[] src = {1,2,3};
int[] dest = new int[3];
System.arraycopy(src,0,dest,0,3);//src.length()

3.currentTimeMillens

//返回当前时间距离1970-1-1的毫秒数

System.out.println(System.currentTimeMillens());

4.gc

//运行垃圾回收机制

1.8 BigInteger和BigDecimal类

BigInteger bigInteger = new BigInteger("2379999999999999999999999");//转成字符串
BigInteger bigInteger = new BigInteger("100");

//1.在对BigInteger进行加减乘除的时候,需要使用对应的方法,不能直接进行 + - * /
BigInteger add = bigInteger.add(bigInteger2);

​ *BigInteger 大整数(整型)

​ *BigDecimal 大精度(小数)

1.add

//加

2.subtract

//减

3.multiply

//乘

4.divide

//除

BigDecimal bigDecimal = new BigDecimal("19999.111111111111999999999");
BigDecimal bigDecimal2 = new BigDecimal("2");
//在调用divide方法时,指定精度即可,BigDecimal.ROUND_CEILING
//如果有无限循环小数,就会保留分子的精度
System.out.println(bigDecimal.divide(bigDecimal2,BigDecimal.ROUND_CEILING)

1.9 Date类

*java.util.Date包下

1.第一代日期类

1.Date:精确到毫秒,代表特定的瞬间

2.SimpleDateFormat:格式和解析日期的类

​ SimpleDateFormat 格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化

Date d1 = new Date();	//获取当前系统时间
System.println("当前系统时间为:"+ d1);
//默认输出的日期格式是国外的方式,因此通常需要对格式进行转换

Date d2 = new Dae(9234567);	//通过指定毫秒数得到时间
System.out.println(d1.getTime());	//获取某个时间对应的毫秒数

//1.创建SimpleDateFormat对象,可以指定对应的格式
//2.这里的格式使用的字母是规定的,如下表
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
String format = sdf.format(d1);

//1.把一个格式化的String转成对应的Date
//2.在把String -> Date使用的sdf格式需要和你给的String格式一样,否则会抛出转换异常

String s = "1996年01月01日 10:20:30 星期一";
Date parse = sdf.parse(s);

在这里插入图片描述

2.第二代日期类

​ *Calender(日历)

​ *Calender类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

//1.Calender是一个抽象类,并且构造器是private
//2.可以通过getInstance()	来获取实例
//3.提供大量的方法和字段提供给程序员
Calender c = Calender.getInstance();

//2.获取日历对象的某个日历字段
System.out.println("年:"+c.get(Calendar.YEAR));

//月要+1,因为Calendar返回月时,是按照0开始编号
System.out.println("月:"+(c.get(Calendar.MONTH) + 1));
System.out.println("日:"+c.get(Calendar.DAY_OF_MONTH));
System.out.println("小时:"+c.get(Calendar.HOUR));//HOUR_OF_DAY	改为24小时制
System.out.println("分钟:"+c.get(Calendar.MINUTE));
System.out.println("秒:"c.get(Calendar.SECOND));

//Calendar没有专门的格式化方法,所以需要自己来组合显示

3.第三代日期类

​ *可变性:像日期和时间这样的类应该是不可变的

​ *偏移性:Date中的年份是从1900开始的,而月份都从0开始

​ *格式化:格式化只对Date有用,Calender不行

​ *不是线程安全的;不能处理润秒(每隔2天,多出1s)

1.常见方法

1.LocalDate(日期、年月日)、LocalTime(时间、时分秒)、LocalDateTime(日期时间、年月日、时分秒)

//1.使用Now返回当前日期时间的对象
LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);

ldt.getYear();
ldt.getMonthValue();	//数字的Month
ldt.getMonth();	//英文的Month
ldt.getDayOfMonth();
ldt.getHour();
ldt.getMinute();
ldt.getSecond();

2.DateTimeFormatter格式日期类

类似于SimpleDateFormat

DateTimeFormat dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");
String str = dtf.format(日期对象);

3.Instant //时间戳

//提供了一系列和Date类转换的方式
//Instant--->Date
Date date = Date.from(instant);

//Date--->Instant
Instant instant = date.toInstant();

//1.通过静态方法Now()获取表示当前时间戳的对象
Instant now = Instant.now();

​ *其它方法可以自己上网查

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

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

相关文章

Web3钱包开发获取测试币-Base Sepolia(二)

Web3钱包开发获取测试币-Base Sepolia(二) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b0c0ac86b04a496087471388532bc54a.png) 基于上篇 Web3钱包开发获取测试币-Polygon Mumbai(一) &#xff1a;https://suwu150.blog.csdn.net/article/details/137949473 我…

Centos7.9云计算CloudStack4.15 高级网络配置(3)

上两章的文章都是用的CloudStack的基本网络&#xff0c;这一篇我们来介绍CloudStack的高级网络&#xff0c;这里虚拟机用的是自己配置的内部网络&#xff0c;通过nat方式到物理网络。按照第一篇的文章&#xff0c;安装管理服务器和计算服务器。 并且在管理服务器配置好如下的全…

“EDM邮件营销”如何构建企业获客增长新赛道

在这个瞬息万变的数字时代&#xff0c;企业的营销策略不断进化&#xff0c;以求在激烈的市场竞争中脱颖而出。其中&#xff0c;“EDM&#xff08;Electronic Direct Mail&#xff09;邮件营销”作为一项经典且高效的营销手段&#xff0c;正借助先进的技术力量&#xff0c;重新焕…

20232937文兆宇 2023-2024-2 《网络攻防实践》实践六报告

20232937文兆宇 2023-2024-2 《网络攻防实践》实践六报告 1.实践内容 &#xff08;1&#xff09;动手实践Metasploit windows attacker 任务&#xff1a;使用metasploit软件进行windows远程渗透统计实验 具体任务内容&#xff1a;使用windows Attacker/BT4攻击机尝试对wind…

一篇文章带您了解面向对象(java)

1.简单理解面向过程编程和面向对象编程 面向过程编程&#xff1a;开发一个一个的方法&#xff0c;有数据需要处理&#xff0c;我们就可以调用方法来处理。 package com.web.quictstart;public class demo1 {public static void main(String[] args) {totalScore("张三&q…

05 JavaScript学习:语法

JavaScript 是一种动态类型的脚本语言&#xff0c;广泛用于网页开发和构建交互式网页。JavaScript 的语法相对简单&#xff0c;但功能强大&#xff0c;它可以在客户端执行&#xff0c;并与HTML和CSS一起构建交互式的网页。 JavaScript 字面量 在 JavaScript 中&#xff0c;字…

CUDA编程---线程束洗牌指令

从Kepler系列的GPU&#xff08;计算能力为3.0或更高&#xff09;开始&#xff0c;洗牌指令&#xff08;shuffle instruction&#xff09;作为一种机制被加入其中&#xff0c;只要两个线程在相同的线程束中&#xff0c;那么就允许这两个线程直接读取另一个线程的寄存器。 洗牌指…

实验 3--表的基本操作与数据查询

文章目录 实验 3--表的基本操作与数据查询4.3.1 实验目的4.3.2 实验准备实验内容1.在 SSMS 中向数据库 YGKQ 中的表插入数据。2.使用 T-SQL 语句向 YGKQ 中的表插入数据。3.在 SSMS 中删除数据库 YGKQ 中的表数据。4.使用 T-SQL 语句删除数据库 YGKQ中的表数据。5.在 SSMS 中修…

高级IO和5种IO模型

目录 1. 高级IO1.1 IO的基本概念1.2 OS如何得知外设当中有数据可读取1.3 OS如何处理从网卡中读取到的数据包1.4 IO的步骤 2. 五种IO模型2.1 利用钓鱼来理解2.2 阻塞IO2.3 非阻塞IO2.4 信号驱动IO2.5 IO多路转接2.6 异步IO 3. 高级IO的概念3.1 同步通信 VS 异步通信3.2 阻塞 VS …

《C语言深度解剖》(9):深度剖析数据在内存中的存储

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&am…

ubuntu22.04 CH340/CH34x 驱动安装

CH34x驱动地址&#xff1a;CH341SER_LINUX.ZIP - 南京沁恒微电子股份有限公司 1、卸载旧驱动&#xff08;如果存在&#xff09; sudo rmmod ch341.ko 2、解压进入 driver 目录 unzip CH341SER_LINUX.ZIP cd CH341SER_LINUX/driver 3、编译 make 可能错误&#xff1a; make[1]…

Linux的学习之路:18、进程间通信(2)

摘要 本章主要是说一下命名管道和共享内存 目录 摘要 一、命名管道 1、创建一个命名管道 2、匿名管道与命名管道的区别 3、命名管道的打开规则 4、代码实现 二、system V共享内存 1、共享内存 2、共享内存函数 三、代码 四、思维导图 一、命名管道 1、创建一个命…

企业车辆管理系统平台是做什么的?

企业车辆管理系统平台是一种综合性的管理系统&#xff0c;它主要集车辆信息管理、车辆调度、车辆维修、油耗管理、驾驶员管理以及报表分析等多种功能于一体。通过这个平台&#xff0c;企业可以实现对车辆的全面管理&#xff0c;优化车辆使用效率&#xff0c;降低运营成本&#…

SpringAOP从入门到源码分析大全(四)SpringAOP的源码分析

文章目录 系列文档索引六、EnableAspectJAutoProxy源码分析1、AnnotationAwareAspectJAutoProxyCreator源码&#xff08;1&#xff09;wrapIfNecessary方法&#xff08;2&#xff09;createProxy 2、getAdvicesAndAdvisorsForBean查找所有Advisor&#xff08;1&#xff09;find…

进程概述与进程创建

进程概述 程序和进程是计算机科学中的基本概念&#xff0c;它们经常被提到&#xff0c;尤其是在操作系统的上下文中。这两个概念虽然紧密相关&#xff0c;但有明显的区别&#xff1a; 程序&#xff08;Program&#xff09; 程序是指存储在磁盘上的一组指令和数据&#xff0c…

【Vue3】$subscribe订阅与反应

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

STM32标准库编程与51单片机直接写寄存器的区别和联系

简介&#xff1a; 在学完51单片机之后&#xff0c;我们去学习32的时候&#xff0c;会发现编程的方法有很大的区别&#xff0c;让人非常的不适应&#xff0c;但是通过不断的调用相应外设的库函数之后&#xff0c;你也可以去编程STM32&#xff0c;来实现功能&#xff0c;但是你真…

nodejs版本过高导致vue-cli无法启动的解决方案

目录 前言异常现象解决方案总结 前言 之前使用软件管家升级了Nodejs&#xff0c;今天在运行Vue项目的时候老是报错&#xff0c;查了很多资料&#xff0c;最后确定是Nodejs版本过高导致的。 异常现象 E:\project\ry\RuoYi-Cloud\ruoyi-ui>npm run dev> ruoyi3.6.4 dev …

Attention和Transformer灵魂七问

1. 引言 最近&#xff0c;ChatGPT和其他聊天机器人将大语言模型LLMs推到了风口浪尖。这就导致了很多不是学ML和NLP领域的人关注并学习attention和Transformer模型。在本文中&#xff0c;我们将针对Transformer模型结构提出几个问题&#xff0c;并深入探讨其背后的技术理论。这…

实验2 组合逻辑电路与时序逻辑电路设计

实验目的: 1.构建基于verilog语言的组合逻辑电路和时序逻辑电路; 2.掌握verilog语言的电路设计技巧。 3.完成如下功能:加法器、译码器、多路选择器、计数器、移位寄存器等。 实验内容及步骤: 一、实验原理 原理图文件《数字系统设计_sch.pdf》,找到如下两个部分: 图…