首页 > 编程语言 >JAVA每日作业day7.1-7.3小总结

JAVA每日作业day7.1-7.3小总结

时间:2024-07-04 12:28:32浏览次数:30  
标签:JAVA String day7.1 System 7.3 字符串 println public out

ok了家人们前几天学了一些知识,接下来一起看看吧

.API

Java 的 API ( API: Application( 应用 ) Programming( 程序 )   Interface(接口 ) ) Java API 就是 JDK 中提供给我们使用的类,这些类将底层 的代码实现封装了起来,我们不需要关心这些类是如何 实现的,只需要学习这些类如何使用即可。 我们在每次查看类中的方法时,都打开源代码进行查 看,这种方式过于麻烦。其实,我们可以通过查帮助文 档的方式,来了解 Java 提供的 API 如何使用。
  • 打开API帮助文档。
  • 点击显示,找到索引,看到输入框。
  • 在输入框里输入,然后回车。
  • 看包。java.lang下的类不需要导包,其他需要。
  • 看类的解释和说明。
  • 看构造方法。
  • 看成员方法

.Object

2.1 Object类概述

java.lang.Object 类是 Java 语言中的根类,每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类 的方法。 如果一个类没有特别指定父类,那么默认则继承自 Object 类。例如:
public class DemoTest/*extends Object*/
 { // ... }

2.2 toString()方法

方法声明: public String toString() :返回该对象的字符 串表示。
public class Person {
 private String name;
 private int age;

 public Person() {}

 public Person(String name, int age) {
     this.name = name;
     this. Age = age;
 }

// 省略 getXXX() 和 setXXX() }
public class DemoTest {
 public static void main(String[] args) {
 Person p=new Person("张三",23);

 // String str = p.toString();
 // System.out.println(str);
 System.out.println(p.toString());

 //源码中println()方法默认调用了 toString()System.out.println(p); 
    }
 }
由于 toString 方法返回的结果是内存地址,而在开发中, 内存地址并没有实际的应用价值,经常需要按照对象的 属性得到相应的字符串表现形式,因此也需要重写它。
public class Person {
 private String name;
 private int age;

 public Person() { }

 public Person(String name, int age) {this.name = name; this. Age = age;}

// 省略 getXXX() 和 setXXX()

 @Override
 public String toString() { return name+"..."+age; } }
public class DemoTest {
 public static void main(String[] args) {
 Person p=new Person("张三",23);
 System.out.println(p.toString());
 System.out.println(p);
 }

 }
在 IntelliJ IDEA 中,可以点击 Code 菜单中的 Generate... ,也可以使用快捷键 alt+insert ,点击 toString() 选项。选择需要包含的成员变量并确定。
public class Person {
 private String name;
 private int age;

 public Person() { }

 public Person(String name, int age) { this.name = name; this. Age = age; }

// 省略 getXXX() 和 setXXX()

 @Override
 public String toString() {
 return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
 }
 }

2.3 equals()方法

方法声明: public boolean equals(Object obj) :指示其 他某个对象是否与此对象 “ 相等 ” 。 equals 方法默认比较两个对象的内存地址是否相同,相 同则返回 true Object 类 equals() 方法源码:
public boolean equals(Object obj) {
 return (this == obj);
 }
  • this是当前对象,哪个对象调用的equals方法就表示哪个对象
  • obj 表述传递的参数,参数类型 Object ,可以传递任意类型对象。
  • this==obj 比较两个对象的内存地址是否相同
public class Person {
 private String name;
 private int age;

 public Person() { }

 public Person(String name, int age) { this.name = name;this.age = age; }

// 省略 getXXX() 和 setXXX()

 @Override
 public String toString() {
 return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; 
    }
 }
* ==: 既可以比较基本数据类型 , 也可以比较引用数据类型 * 比较基本数据类型 : 比较值是否相等 * 比较引用数据类型 : 比较地址值是否相等 * * public boolean equals(Object obj) :指示其 他某个对象是否与此对象 “ 相等 ” 。 */ public class DemoTest { public static void main ( String [] args ) { // 比较基本数据类型 int a = 10 ; int b = 20 ; System . out . println ( a == b ); //false // 比较引用数据类型 Person p01 = new Person ( " 张三 " , 23 ); Person p02 = new Person ( " 张三 " , 23 ); System . out . println ( p01 == p02 ); //false //Object 类的 equals() 方法 System . out . println ( p01 . equals ( p02 )); //false } } 实际应用中,比较内存地址是否相同并没有意义,我们 可以定义对象自己的比较方式,比较对象中成员变量的 值是否相同。需要对方法进行重写。 需求:重写 equals() 方法,比较两个对象中姓名和年龄是 否相同,如果姓名和年龄都相同返回 true ,否则返回 false 。 public class Person { private String name ; private int age ; public Person () { } public Person ( String name , int age ) { this . name = name ; this . age = age ; } // 省略 getXXX() 和 setXXX() @Override public boolean equals ( Object obj ) { // 判断两个对象地址弱相同,即为同一个对象 if ( this == obj ){ return true ; } //obj 对象为空,无需比较,返回 false if ( obj == null ){ return false ; } // 如果 Obj 是 Person 类型 则强制转换 if ( obj instanceof Person ){ Person person = ( Person ) obj ; return this . name . equals ( person . name ) && this . age == person . age ; } return false ; } @Override public String toString () { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}' ; } public class DemoTest { public static void main ( String [] args ) { Person p01 = new Person ( " 张三 " , 23 ); Person p02 = new Person ( " 张三 " , 23 ); System . out . println ( p01 . equals ( p02 )); //true } } 在 IntelliJ IDEA 中,可以使用 Code 菜单中的 Generate… 选项,也可以使用快捷 alt+insert ,并选择 equals() and hashCode() 进行自动代码生成。

.String

3.1 String类概述

String 类代表字符串, Java 程序中的所有字符串文字 (例如 “abc” )都被实现为此类的实例。 Java 程序中所有的双引号字符串,都是 String 类的对 象。 String 类在 java.lang 包下,所以使用的时候不需要 导包!

3.2 String类的构造方法

public String() 创建一个空字符串对象 public String(String original) 通过给定的内容创建一 个 String 对象 public String(char[] value) 根据 char 数组中的内容 , 来 创建对应的字符串对象 public String(byte[] bytes) 根据 byte 数组中的内容 , 来 创建对应的字符串对象 public String(byte[] bytes, int offset, int length) 指 定 byte 数组的范围 , 根据指定范围中的内容 , 来创建对应 的字符串对象 直接写字符串字面值也是 String 类对象 例如 : String str = "abc"; public class DemoTest { public static void main ( String [] args ) { //public String() :创建一个空白字符串对象,不含有任何内容 String str01 = new String (); System . out . println ( "str01=" + str01 ); //public String(String original) 通过给定的内容创建一个 String 对象 String str02 = new String ( "abc" ); System . out . println ( "str02=" + str02 ); //public String(char[] value) 根据char数组中的内容 , 来创建对应的字符串对象 char [] cs = { 'a' , 'b' , 'c' , 'd' }; String str03 = new String ( cs ); System . out . println ( "str03=" + str03 ); //public String(byte[] bytes) 根据byte数组中的内容 , 来创建对应的字符串对象 byte [] bs = { 97 , 98 , 99 , 100 , 101 }; String str04 = new String ( bs ); System . out . println ( "str04=" + str04 ); //public String(byte[] bytes, int offset, int length) // 指定 byte 数组的范围 , 根据指定范围中的内容, 来创建对应的字符串对象 String str05 = new String ( bs , 1 , 3 ); System . out . println ( "str05=" + str05 ); // 直接写字符串字面值也是 String 类对象 String str06 = "hello" ; System . out . println ( "Str06=" + str06 ); } }

3.3 两种方式创建字符串的区别

通过 new 创建的字符串对象,每一次 new 都会申请 一个内存空间,虽然字符串内容相同,但是地址值不 同 public class DemoTest { public static void main ( String [] args ) { String str01 = new String ( "hello" ); String str02 = new String ( "hello" ); System . out . println ( str01 == str02 ); //false 地址值不同 } } 以 “ ” 方式给出的字符串,只要字符序列相同 ( 顺序和大 小写 ) ,无论在程序代码中出现几次,都只会建立一个 String 对象 public class DemoTest { public static void main ( String [] args ) { String str01 = "hello" ; String str02 = "hello" ; System . out . println ( str01 == str02 ); //true } }

3.4 字符串常用方法

public int length (): 返回此字符串的长度。 public boolean equals(String s): 比较两个字符串内容 是否相同、区分大小写 public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较, 忽略大小写。 public String concat (String str): 将指定的字符串连接 到该字符串的末尾。 public char charAt (int index): 返回指定索引处的 char 值。 public int indexOf (String str): 返回指定子字符串第一 次出现在该字符串内的索引。 public String substring (int beginIndex): 返回一个子 字符串,从 beginIndex 开始截取字符串到字符串结 尾。 public String substring (int beginIndex, int endIndex): 返回一个子字符串 , 从 beginIndex 到 endIndex 截取字符串。含 beginIndex, 不含 endIndex 。 public class DemoTest { public static void main ( String [] args ) { String str = "woaijava" ; //public int length (): 返回此字符串的 长度。 int len = str . length (); System . out . println ( len ); //8 //public boolean equals(String s): 比较两个字符串内容是否相同、区分大小写 boolean lean01 = str . equals ( "woaiJava" ); //false System . out . println ( lean01 ); //public boolean equalsIgnoreCase(String anotherString) // 将此字符串与指定对象进行比较,忽略大小写。 boolean lean02 = str . equalsIgnoreCase ( "woaiJava" ); System . out . println ( lean02 ); //true //public String concat (String str): 将指定的字符串连接到该字符串的末尾。 String newStr = str . concat ( "haha" ); System . out . println ( newStr ); //woaijavahaha //public char charAt (int index): 返回指定索引处的 char 值。 char c = str . charAt ( 3 ); System . out . println ( c ); //i // 遍历字符串 w o a i j a v a for ( int i = 0 ; i < str . length (); i ++ ){ System . out . print ( str . charAt ( i ) + "\t" ); } System . out . println (); //public int indexOf (String str): // 返回指定子字符串第一次出现在该字符串内的 索引。 beginIndex 开始截 取字符串到字符串结尾。 String sub01 = str . substring ( 4 ); System . out . println ( sub01 ); //java //public String substring (int beginIndex, int endIndex): // 返回一个子字符串 , 从 beginIndex 到 endIndex截取字符串。 // 含 beginIndex, 不含 endIndex 。 String sub02 = str . substring ( 2 , 6 ); System . out . println ( sub02 ); //aija } }

3.5 其他方法

public class DemoTest { public static void main ( String [] args ) { //boolean isEmpty() 判断字符串是否为空(长度为 0 返回 true ,不为 0 返回 false) String str01 = null ; // 空 表示什么都没有 String str02 = "" ; // 空字符串对象 String str03 = " " ; // 有一个空格字符的字符 串对象 System . out . println ( "---------------------" ); //System.out.println(str01.isEmpty());//Nul lPointerException System . out . println ( str02 . isEmpty ()); //true System . out . println ( str03 . isEmpty ()); //false System . out . println ( "---------------------" ); //boolean contains(CharSequence s) 判 断字符串中是否包含 给定的字符串 String str04 = "helloworld" ; System . out . println ( str04 . contains ( "Hello" )) ; //false System . out . println ( str04 . contains ( "world" )) ; //true System . out . println ( "---------------------" ); //boolean startsWith(String prefix) 判断字符串是否以 给定的字符串开头 //boolean endsWith(String suffix) 判断字符串是否以 给定的字符串 结尾。 String str05 = "helloworld.java" ; System . out . println ( str05 . startsWith ( "world" )); //false System . out . println ( str05 . startsWith ( "he" )); //true System . out . println ( str05 . endsWith ( ".java" )) ; //true System . out . println ( str05 . endsWith ( ".html" )) ; //false System . out . println ( "---------------------" ); //String toLowerCase() 把字母都转成其对应的小写形式 //String toUpperCase() 把字母都转成其对应的大写形式 String str06 = "AbCdEf" ; System . out . println ( str06 . toLowerCase ()); //abcdef System . out . println ( str06 . toUpperCase ()); //ABCDEF System . out . println ( "---------------------" ); //String replace(char oldChar, char newChar)用新内容替代旧内容,返回新的字符串 String str07 = " 小学生放假了 , 小学生打游戏 了" ; String str08 = str07 . replace ( " 小学生" , "***" ); System . out . println ( str08 ); //*** 放假了,*** 打游戏了 System . out . println ( "---------------------" ); //char[] toCharArray() 将此字符串转换为一个新的字符数组 String str09 = "abcd" ; char [] cs = str09 . toCharArray (); System . out . println ( Arrays . toString ( cs )); //[ a, b, c, d] System . out . println ( "---------------------" ); //byte[] getBytes() 把字符串转换为字节数组 String str10 = "hello" ; byte [] bs = str10 . getBytes (); System . out . println ( Arrays . toString ( bs )); //[ 104, 101, 108, 108, 111] System . out . println ( "---------------------" ); // String trim() 移除首尾空格 String str11 = " zhangsan " ; String str12 = str11 . trim (); System . out . println ( str12 ); System . out . println ( "---------------------" ); //String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。 // 传入一个普通的字符串 , 没有特殊含义 String str13 = "a,b,c,d,e" ; String [] sp01 = str13 . split ( "," ); System . out . println ( Arrays . toString ( sp01 )); //[a, b, c, d, e] // 高级用法 : 传入有特殊含义的字符串 , 其实就是正则表达式 // 正则表达式 : . 匹配任何单字符 String str14 = "a.b.c.d.e" ; String [] sp02 = str14 . split ( "\\." ); System . out . println ( Arrays . toString ( sp02 )); }

}

.StringBuilder

4.1 String类字符串拼接问题

public static void main ( String [] args ) { String str = "hello" ; str += "world" ; System . out . println ( str ); } } 在 API 中对 String 类有这样的描述:字符串是常量,它们 的值在创建后不能被更改。 根据这句话分析我们的代码,其实总共产生了三个字符 串 : Hello 、 World 和 HelloWorld 。 String 类的字符串拼接 , 每一次拼接完都会得到一个新的 字符串对象 , 所以比较耗时 , 也浪费空间。

4.2 StringBuilder类概述

StringBuilder 是一个可变的字符串类 ,我们可以把它 看成是一个容器,这里的可变指的是 StringBuilder 对象 中的内容是可变的。 StringBuilder 类和 String 类的区别 String 类:内容是不可变的 StringBuilder 类:内容是可变的

4.3 StringBuilder类的构造方法

public StringBuilder() 创建一个空白可变字符串对 象,不含有任何内容 public StringBuilder(String str) 根据字符串的内容, 来创建可变字符串对象 public class DemoTest { public static void main ( String [] args ) { //public StringBuilder() :创建一个空白可变字符串对象,不含有任何内容 StringBuilder sb01 = new StringBuilder (); System . out . println ( "sb01=" + sb01 ); System . out . println ( " 长度=" + sb01 . length ()); //public StringBuilder(String str) :根据字符串的内容,来创建可变字符串对象 StringBuilder sb02 = new StringBuilder ( "hello" ); System . out . println ( "sb02=" + sb02 ); System . out . println ( " 长度 =" + sb02 . length ()); } }

4.4 StringBuilder类常用方法

public StringBuilder append( 任意类型 ) 拼接数据, 并返回对象本身 public StringBuilder insert(int offset, 任意类型 ) 在 指定位置插入数据 , 并返回对象本身 public StringBuilder reverse() 反转字符串 , 并返回对 象本身 public class DemoTest { public static void main ( String [] args ) { StringBuilder sb01 = new StringBuilder (); //public StringBuilder append( 任意类 型 ) 拼接数据,并返回对象本身 // StringBuilder sb02 = sb01.append("hello"); System.out.println(sb02==sb01);//true // sb01.append(123); // System.out.println(sb01); //public StringBuilder insert(int offset, 任意类型 ) // 在指定位置插入数据 , 并返回对象本身 // sb01.insert(5,"world"); // System.out.println(sb01) //public StringBuilder reverse() 反转字符串, 并返回对象本身 // StringBuilder sb03 = sb01.reverse(); // System.out.println(sb01==sb03); // System.out.println(sb01); // 链式编程 sb01 . append ( "hello" ). append ( 123 ). insert ( 5 , "world" ). reverse (); System . out . println ( sb01 ); } }

4.5 StringBuilderString相互转换

StringBuilder 转换为 String public String toString() :通过 StringBuilder 类中的 toString() 就可以实现把 StringBuilder 转换为 String String 转换为 StringBuilder public StringBuilder(String s) :通过 StringBuilder 的构 造方法就可以实现把 String 转换为 StringBuilder public class DemoTest { public static void main ( String [] args ) { //String -->StringBuilder String str01 = "hello" ; StringBuilder sb = new StringBuilder ( str01 ); sb . append ( "world" ); //StringBuilder --> String String s = sb . toString (); System . out . println ( s ); } } ok了家人们睡了明天见

标签:JAVA,String,day7.1,System,7.3,字符串,println,public,out
From: https://blog.csdn.net/2201_75555400/article/details/140108668

相关文章

  • JAVA多线程快速入门
    什么是多线程概述线程线程是操作系统能够进行运算调度的最小单位它被包含在进程之中,是进程中的实际运作单位简单理解应用软件中互相独立,可以同时运行的功能进程进程是程序的基本执行实体/系统分配资源的基本单位作用充分利用cpu提......
  • [java]windows下jdk安装包所有版本系列下载地址汇总国内源下载
    jdk1.8及其以前版本可以参考[java]windows和linux下jdk1.8安装包所有版本系列下载地址汇总,这里只发布jdk9及其以后最新版本。注意下面均为windowsx64版本安装包exe格式序号java版本下载地址1jdk-22.0.1-windows-x64-bin.exe点我下载2jdk-21.0.3-windows-x64-bin.exe点我下......
  • Java多线程编程
    1.进程进程是指操作系统中正在运行的程序实例,它是系统资源分配的基本单位。每个进程都拥有独立的内存空间和系统资源,可以看作是程序的一次执行过程。2.线程线程是进程中的执行单元,也被称为轻量级进程(LightWeightProcess)。一个进程可以包含多个线程,这些线程共享进......
  • java笔记分享(6)
    RandomRandom类        Random类位于java.util包下,Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。        相同种子数的Random对象,相同次数......
  • 采用Java语言+开发工具 Idea+ scode数字化产科管理平台源码,产科管理新模式
    采用Java语言+开发工具Idea+scode数字化产科管理平台源码,产科管理新模式数字化产科管理系统是现代医疗信息化建设的重要组成部分,它利用现代信息技术手段,对孕产妇的孕期管理、分娩过程及产后康复等各个环节进行数字化、智能化管理,以提升医疗服务质量和效率;以下是对数字化......
  • 基于Java中的SSM框架实现野生动物公益保护系统项目【项目源码+论文说明】计算机毕业设
    基于Java中的SSM框架实现野生动物公益保护系统演示摘要本系统按照网站系统设计的基本流程,遵循系统开发生命周期法和结构化方法,基于Java语言设计并实现了野生动物公益保护系统。该系统基于浏览器/服务器模式,采用JSP技术,后台数据库系统选择MySQL数据库。系统分为前台和后台......
  • java 导出execl 文件实现动态列和列合并
    1.importorg.apache.poi.ss.usermodel.*;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;第一步,判断有几列,放入list ,list一个一个判断,组装列 第二步,放数据的时候同样的逻辑,一列一列判断,放入数据  《2》实现列和行合并和列居中 4.main方法写到本地测试......
  • java高仿真数据生成器-需要的拿去
    java高仿真数据生成器源码-需要的拿去nit-random-tools介绍:高仿真数据生成器逆天开源java证号码,姓名,职业,日期,手机号生成器功能列表编号功能描述class1号生成器NitIdcardGenerator2姓名生成器NitChineseNameGenerator3职业生成器NitJobGenerator4日期生成器N......
  • Java程序员转到AI大模型开发的路线_java转ai
    从Java开发转向AI大模型开发,需要系统地学习和掌握一系列新的技术和算法。以下是一条推荐的学习路线:数学与统计学基础:线性代数:矩阵运算、特征值与特征向量等。概率论与统计学:概率分布、假设检验、最大似然估计、贝叶斯推断等。微积分:梯度求解和优化理论。机器学习入门:......
  • JAVA开发环境的搭建(JDK下载与安装)
    一、什么是JDK、JREJDK(JavaDevelopmentKit):是Java程序开发工具包,包含JRE和开发人员使用的工具。JRE(JavaRuntimeEnvironment):是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。小结:        JDK=JRE+开发工具集(例如Javac编译工具等)        ......