Java技术复习提升 11 常用类

第11章 常用类

1 包装类 

不同包装类都继承自Object类 Serialiazble接口表示该类表示序列化 Comparable接口用于定义自然顺序

包装类和基本数据的转换

jdk5之前手动装箱拆箱 jdk5之后自动装箱拆箱 自动装箱底层调用的是valueof方法 拆箱仍然是intvalue方法

public class Integer1 {public static void main(String[] args) {//以前//手动装箱Integer integer=new Integer(1);Integer integer1=Integer.valueOf(1);//手动拆箱int n=integer1.intValue();System.out.println(integer1);System.out.println(n);//现在//自动装箱拆箱Integer m=2;int k=m;System.out.println(m.intValue());System.out.println(k);}
}

 结合三目运算符

Object obj1 = true? new Integer(1):new Double(2.0);
System.out.println(obj1);

包装类和String类的转换 以Integer和String举例

public class Integer1 {public static void main(String[] args) {Integer integer=1;String s1=integer.toString();System.out.println(s1);String s2=String.valueOf(integer);System.out.println(s2);String s3="fsl"+" "+integer;System.out.println(s3);Integer t1=Integer.parseInt(s1);System.out.println(t1);Integer t2=new Integer(s2);System.out.println(s2);}
}

常用方法

 源码解释

11.2 String类

创建string:直接赋值 String s="abc";调用构造器 String s=new String(abc);

两种方式区别:前者是直接查看常量池是否有abc数据空间 有直接指向 没有重新创建 然后指向 s最终指向的是常量池地址;后者是先在堆里创造空间 里面维护value属性 再通过value指向常量池abc数据空间 有直接指向 没有重新创建 然后指向 s最终指向是堆中的空间地址

11.3 字符串的特性

 String是final类 一旦字符串对象被分配 内容不可变

结果 hsp and hava 因为 str是string修饰的 不可变 修改不影响 但ch虽然是final修饰 但只是引用不可改变 具体的值还可以改变 所以被修改

也就是说 final修饰数组时 只代表数组的引用不可修改 数组具体的值可以修改;但final修饰基本数据类型时 是不可修改的

11.4 String类常用方法

public class String1 {public static void main(String[] args) {//1. equals 前面已经讲过了. 比较内容是否相同,区分大小写String str1 = "hello";String str2 = "Hello";System.out.println(str1.equals(str2));//// 2.equalsIgnoreCase 忽略大小写的判断内容是否相等String username = "johN";if ("john".equalsIgnoreCase(username)) {System.out.println("Success!");} else {System.out.println("Failure!");}// 3.length 获取字符的个数,字符串的长度System.out.println("韩顺平".length());// 4.indexOf 获取字符在字符串对象中第一次出现的索引,索引从0开始,如果找不到,返回-1String s1 = "wer@terwe@g";int index = s1.indexOf('@');System.out.println(index);// 3System.out.println("weIndex=" + s1.indexOf("we"));//0// 5.lastIndexOf 获取字符在字符串中最后一次出现的索引,索引从0开始,如果找不到,返回-1s1 = "wer@terwe@g@";index = s1.lastIndexOf('@');System.out.println(index);//11System.out.println("ter的位置=" + s1.lastIndexOf("ter"));//4// 6.substring 截取指定范围的子串String name = "hello,张三";//下面name.substring(6) 从索引6开始截取后面所有的内容System.out.println(name.substring(6));//截取后面的字符//name.substring(0,5)表示从索引0开始截取,截取到索引 5-1=4位置,也就是[0,5)System.out.println(name.substring(2,5));//llo}
}

 

public class String2 {public static void main(String[] args) {// 1.toUpperCase转换成大写String s = "heLLo";System.out.println(s.toUpperCase());//HELLO// 2.toLowerCaseSystem.out.println(s.toLowerCase());//hello// 3.concat拼接字符串String s1 = "宝玉";s1 = s1.concat("林黛玉").concat("薛宝钗").concat("together");System.out.println(s1);//宝玉林黛玉薛宝钗together// 4.replace 替换字符串中的字符s1 = "宝玉 and 林黛玉 林黛玉 林黛玉";//在s1中,将 所有的 林黛玉 替换成薛宝钗// 老韩解读: s1.replace() 方法执行后,返回的结果才是替换过的.// 注意对 s1没有任何影响String s11 = s1.replace("宝玉", "jack");System.out.println(s1);//宝玉 and 林黛玉 林黛玉 林黛玉System.out.println(s11);//jack and 林黛玉 林黛玉 林黛玉// 5.split 分割字符串, 对于某些分割字符,我们需要 转义比如 | \\等String poem = "锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦";// 1. 以 , 为标准对 poem 进行分割 , 返回一个数组// 2. 在对字符串进行分割时,如果有特殊字符,需要加入 转义符 \String[] split = poem.split(",");poem = "E:\\aaa\\bbb";split = poem.split("\\\\");System.out.println("==分割后内容===");for (int i = 0; i < split.length; i++) {System.out.println(split[i]);}// 6.toCharArray 转换成字符数组s = "happy";char[] chs = s.toCharArray();for (int i = 0; i < chs.length; i++) {System.out.println(chs[i]);}// 7.compareTo 比较两个字符串的大小,如果前者大,// 则返回正数,后者大,则返回负数,如果相等,返回0// 老韩解读// (1) 如果长度相同,并且每个字符也相同,就返回 0// (2) 如果比较到两个字符不相等//     就返回 if (c1 != c2) {//                return c1 - c2;//            }// (3) 如果前面的部分都相同,就返回 str1.len - str2.lenString a = "jcck";// len = 4String b = "jack";// len = 4String c = "jacka";//len = 5System.out.println(a.compareTo(b));// 返回值是 'c' - 'a' = 2的值System.out.println(b.compareTo(c));// 8.format 格式字符串/* 占位符有:* %s 字符串 %c 字符 %d 整型 %.2f 浮点型*/String name = "john";int age = 10;double score = 56.857;char gender = '男';//将所有的信息都拼接在一个字符串.String info ="我的姓名是" + name + "年龄是" + age + ",成绩是" + score + "性别是" + gender + "。希望大家喜欢我!";System.out.println(info);//老韩解读//1. %s , %d , %.2f %c 称为占位符//2. 这些占位符由后面变量来替换//3. %s 表示后面由 字符串来替换//4. %d 是整数来替换//5. %.2f 表示使用小数来替换,替换后,只会保留小数点两位, 并且进行四舍五入的处理//6. %c 使用char 类型来替换String formatStr = "我的姓名是%s 年龄是%d,成绩是%.2f 性别是%c.希望大家喜欢我!";String info2 = String.format(formatStr, name, age, score, gender);System.out.println("info2=" + info2);}
}

11.5 StringBuffer类

 

 stringbuffer构造器

package com.hspedu.stringbuffer_;
public class StringBuffer02 {
    public static void main(String[] args) {
        //构造器的使用
        //1. 创建一个 大小为 16的 char[] ,用于存放字符内容
        StringBuffer stringBuffer = new StringBuffer();
        //2 通过构造器指定 char[] 大小
        StringBuffer stringBuffer1 = new StringBuffer(100);
        //3. 通过 给一个String 创建 StringBuffer, char[] 大小就是 str.length() + 16
        StringBuffer hello = new StringBuffer("hello");
    }
}
 

String/StringBuffer相互转换

 

public class String2 {public static void main(String[] args) {String s="byx";StringBuffer sb=new StringBuffer(s);StringBuffer sb1=new StringBuffer();sb1.append(s);System.out.println(sb);System.out.println(sb1);String s1=sb.toString();String s2=new String(s);System.out.println(s1+s2);}
}

注意:String通过+拼接 但StringBuffer和StringBuilder通过append()进行拼接

 StringBuffer常见方法

 package com.hspedu.stringbuffer_;
public class StringBufferMethod {
    public static void main(String[] args) {
        StringBuffer s = new StringBuffer("hello");
        //增
        s.append(',');// "hello,"
        s.append("张三丰");//"hello,张三丰"
        s.append("赵敏").append(100).append(true).append(10.5);//"hello,张三丰赵敏100true10.5"
        System.out.println(s);//"hello,张三丰赵敏100true10.5"
        //删
        /*
         * 删除索引为>=start && <end 处的字符
         * 解读: 删除 11~14的字符 [11, 14)
         */
        s.delete(11, 14);
        System.out.println(s);//"hello,张三丰赵敏true10.5"
        //改
        //老韩解读,使用 周芷若 替换 索引9-11的字符 [9,11)
        s.replace(9, 11, "周芷若");
        System.out.println(s);//"hello,张三丰周芷若true10.5"
        //查找指定的子串在字符串第一次出现的索引,如果找不到返回-1
        int indexOf = s.indexOf("张三丰");
        System.out.println(indexOf);//6
        //插
        //老韩解读,在索引为9的位置插入 "赵敏",原来索引为9的内容自动后移
        s.insert(9, "赵敏");
        System.out.println(s);//"hello,张三丰赵敏周芷若true10.5"
        //长度
        System.out.println(s.length());//22
        System.out.println(s);
    }
}

 

练习:

public class StringBufferMethod {public static void main(String[] args) {StringBuffer price=new StringBuffer("1234560.789");for(int i= price.lastIndexOf(".")-3;i>0;i-=3 ){price=price.insert(i,",");}System.out.println(price);}
}

 

11.6 StringBuilder类

 

 

 11.7 String StringBuffer StringBuilder的比较和效率测试

效率 : StringBuilder > StringBuffer > String 

 11.8 Math类

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

 11.9 Arrays类

 

import java.util.Arrays;
import java.util.Comparator;
public class ArraysMethod01 {public static void main(String[] args) {Book[] books=new Book[4];books[0]=new Book(100,"book1");books[1]=new Book(200,"book22");books[2]=new Book(300,"book333");books[3]=new Book(400,"book4444");Arrays.sort(books,new Comparator(){@Overridepublic int compare(Object obj1,Object obj2){Book o1=(Book) obj1;Book o2=(Book) obj2;return o2.getName().length()-o1.getName().length();//按书名降序}});System.out.println(Arrays.toString(books));}
}class Book{private int price;private String name;Book(){}Book(int price,String name){this.price=price;this.name=name;}public int getPrice(){return price;}public String getName(){return name;}@Overridepublic String toString(){return ("Book name:"+name+" price:"+price);}}

 

 11.10 System类

11.11 BigInteger类和BigDecimal类

常用方法

11.12 日期类

第一代

 第二代

 第三代

 

 

 

 

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
public class LocalDate_ {public static void main(String[] args) {//第三代日期//1. 使用now() 返回表示当前日期时间的 对象LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()System.out.println(ldt);//2. 使用DateTimeFormatter 对象来进行格式化// 创建 DateTimeFormatter对象DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String format = dateTimeFormatter.format(ldt);System.out.println("格式化的日期=" + format);System.out.println("年=" + ldt.getYear());System.out.println("月=" + ldt.getMonth());System.out.println("月=" + ldt.getMonthValue());System.out.println("日=" + ldt.getDayOfMonth());System.out.println("时=" + ldt.getHour());System.out.println("分=" + ldt.getMinute());System.out.println("秒=" + ldt.getSecond());LocalDate now = LocalDate.now(); //可以获取年月日LocalTime now2 = LocalTime.now();//获取到时分秒//提供 plus 和 minus方法可以对当前时间进行加或者减//看看890天后,是什么时候 把 年月日-时分秒LocalDateTime localDateTime = ldt.plusDays(890);System.out.println("890天后=" + dateTimeFormatter.format(localDateTime));//看看在 3456分钟前是什么时候,把 年月日-时分秒输出LocalDateTime localDateTime2 = ldt.minusMinutes(3456);System.out.println("3456分钟前 日期=" + dateTimeFormatter.format(localDateTime2));}
}

 

小结:该部分内容较多且有难度 谢谢各位读者能读到这里 也希望大家多多点赞评论 我们共同进步~

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

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

相关文章

P1 练习卷(C++4道题)

1.纷繁世界 内存限制&#xff1a;256MB 时间限制&#xff1a;1s 问题描述 这是一个纷繁复杂的世界。 某一天清晨你起床很迟&#xff0c;没有吃上早饭。于是你骑着自行车去超市&#xff0c;但是你又发现商店的工作人员已经重新贴上了价格标签&#xff0c;零食价格都涨了50%。你…

STL之哈希

STL之哈希 unordered_set/map&哈希之介绍unordered系列哈希哈希表的模拟实现 unordered_set&/map的模拟实现哈希的应用位图&#xff08;bitmap/bitset&#xff09;布隆过滤器&#xff08;Bloom Filter&#xff09;海量数据处理 unordered_set/map&哈希之介绍 unor…

Selenium的八种定位方式

1. 通过 ID 定位 ID 是最直接和高效的方式来定位元素&#xff0c;因为每个页面中的 ID 应该是唯一的。 from selenium import webdriverdriver webdriver.Chrome(executable_pathpath/to/chromedriver) driver.get(https://example.com)# 通过 ID 定位 element driver.find…

logback动态获取nacos配置

文章目录 前言一、整体思路二、使用bootstrap.yml三、增加环境变量四、pom文件五、logback-spring.xml更改总结 前言 主要是logback动态获取nacos的配置信息,结尾完整代码 项目springcloudnacosplumelog&#xff0c;使用的时候、特别是部署的时候&#xff0c;需要改环境&#…

AwsCredentialsProvider认证接口

一、介绍 1、简介 AwsCredentialsProvider 是 AWS SDK 中用于提供 AWS 身份验证凭证的一个接口。AWS SDK 中涉及身份验证和授权的操作都需要用到凭证,而 AwsCredentialsProvider 作为一种抽象,负责提供这些凭证。AwsCredentialsProvider 在 Java SDK 中尤为重要,它可以用于…

OpenMM的安装与使用

技术背景 OpenMM是一款基于Python开发的开源分子动力学模拟软件&#xff0c;这几年因为AlphaFold的缘故&#xff0c;使得这个软件的热度有了不少提升。并且可以使用GPU硬件加速&#xff0c;所以性能上也不赖。这里介绍一下该软件的基本安装和使用方法&#xff0c;并附带一个真空…

R语言p值矫正整的方法

在 R 语言中&#xff0c;P 值的校正常用于控制多重假设检验中的错误率。以下是常用的 P 值校正方法及其实现方式&#xff1a; 1. p.adjust函数 R 提供了内置的 p.adjust 函数&#xff0c;支持多种校正方法&#xff1a; # 示例数据 p_values <- c(0.01, 0.02, 0.03, 0.04,…

Linux各种并发服务器优缺点

本文旨在介绍针对“无并发C/S模型”改进的方法总结以及各种改进方法的优缺点&#xff0c;具体函数的实现并不介绍。 1. 无并发C/S模型 创建服务器流程分析&#xff1a; socket()创建服务器的监听套接字bind()将服务器给服务器的监听套接字绑定IP地址和Port端口号listen()设置…

项目:从CSV文件中删除标题行

一、项目内容 打开当前工作目录中所有扩展名为.csv的文件&#xff0c;读取CSV文件的内容&#xff0c;并除掉第一行的内容以重新写入同名的文件。 二、代码分析 循环遍历从os.listdir()得到的文件列表&#xff0c;跳过非CSV文件。创建一个CSV reader对象来读取该文件的内容&a…

cookie反爬----普通服务器,阿里系

目录 一.常见COOKIE反爬 普通&#xff1a; 1. 简介 2. 加密原理 二.实战案例 1. 服务器响应cookie信息 1. 逆向目标 2. 逆向分析 2. 阿里系cookie逆向 1. 逆向目标 2. 逆向分析 实战&#xff1a; 无限debugger原理 1. Function("debugger").call() 2. …

网络无人值守批量装机-cobbler

网络无人值守批量装机-cobbler 一、cobbler简介 ​ 上一节中的pxe+kickstart已经可以解决网络批量装机的问题了,但是环境配置过于复杂,而且仅针对某一个版本的操作系统进批量安装则无法满足目前复杂环境的部署需求。 ​ 本小节所讲的cobbler则是基于pxe+kickstart技术的二…

推荐一款开源电子书阅读器Koodo Reader

Koodo Reader 是一个开源的电子书阅读器&#xff0c;支持多达15种主流电子书格式&#xff0c; 内置笔记、高亮、翻译功能&#xff0c;助力高效书籍阅读和学习。 官网地址&#xff1a;https://www.koodoreader.com/zh 一、下载软件 下载地址&#xff1a;https://dl.koodoreader.…

如何理解JS的 异步

JS是一门单线程的语言&#xff0c;这是因为它运行在浏览器的渲染主线程中&#xff0c;而渲染主线程只有一个。 而渲染主线程承担着诸多的工作&#xff0c;渲染页面、执行JS都在其中运行。 如果使用同步的方式&#xff0c;就极有可能导致主线程产生阻塞&#xff0c;从而导致消…

MySQL 数据库命名及SQL语句书写规范详解

MySQL 数据库命名及SQL语句书写规范详解 在软件开发过程中&#xff0c;数据库的设计与SQL语句的编写是确保系统性能和可维护性的关键因素。良好的命名规范和SQL语句书写规范不仅能提高代码的可读性和可维护性&#xff0c;还能有效减少潜在的错误。本文将详细介绍MySQL数据库中…

FreeRTOS——互斥信号量

一、为什么需要互斥信号量 前面的学习中&#xff1a; 调度锁、临界段不可避免的破坏了实时性&#xff0c;还有二值信号量存在这样的隐患——“优先级翻转” 优先级翻转 简单来说&#xff0c;就是由于信号量被低优先级任务占用&#xff0c;即使遇到高优先级任务&#xff0c;它…

11/19使用Spring,gradle实现前后端交互

创建 Gradle 项目 在你常用的 IDE&#xff08;如 Intellij IDEA&#xff09;中选择创建新的 Gradle 项目&#xff0c;按照向导进行相应的配置&#xff0c;选择合适的项目名称、目录等信息。配置 build.gradle 文件&#xff08;Gradle 项目的配置文件&#xff09;&#xff0c;添…

AIGC学习笔记(6)——AI大模型开发工程师

文章目录 AI大模型开发工程师005 OpenAI大模型案例实践1 AI 翻译助手需求分析项目起源市场价格和市场前景基于大模型的翻译软件核心功能设计 2 AI 翻译助手架构设计架构设计代码结构设计 3 AI 翻译助手核心功能文档解析文档操作PDF文档操作表格操作图片操作 Prompt封装 4 AI 翻…

程序语言语法上手题目合集

程序语言语法上手题目合集 1跑步2猜年龄3Vigenre 密码 1跑步 2.跑步 - 蓝桥云课 枚举日期&#xff0c;判断是否符合条件即可。 参考程序&#xff1a; #include<stdio.h> int y2022,m1,d1; int week6; int month[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int judg…

【HAProxy11】企业级反向代理HAProxy高级功能之访问控制列表(ACL)

HAProxy 高级功能 介绍 HAProxy 高级配置及实用案例 ACL 访问控制列表&#xff08;ACL&#xff0c;Access Control Lists&#xff09;是一种基于包过滤的访问控制技术&#xff0c;它可以根据设定的条 件对经过服务器传输的数据包进行过滤(条件匹配)&#xff0c;即对接收到的…

C#调用C++ DLL方法之P/Invoke

关于P/Invoke Platform Invoke (P/Invoke) 是 .NET 提供的一种服务&#xff0c;允许托管代码&#xff08;如 C#&#xff09;调用非托管代码&#xff08;如 C/C 编写的 DLL 函数&#xff09;。通过 P/Invoke&#xff0c;可以在 .NET 应用程序中使用现有的非托管代码库&#xff…