首页 > 编程语言 >Java—String类

Java—String类

时间:2023-02-16 19:46:05浏览次数:28  
标签:Java String int StringBuffer 字符串 public name

一、toString()方法

1.public String toString():返回对象的字符串;

2.toString(),返回的是对象的地址值,没有实际意义,需要重写;重写规制:返回对象的属性值;

  getClass.getName()+'@'+Integer.toHexString(hashCode));

  getClass.getName----->返回值是完的包名加上类名;

  '@'为连接符号,无特殊含义;

  hashCode()------>表示hashCode值;

  Integer.toHexString()----->表示以十六进制形式来表示;

  如:Person@1c62a(案例2的输出)

 3.案例1:

 1 class Student02{
 2 
 3     private String name;
 4     private int age;
 5 
 6     public Student02(){}
 7 
 8     public Student02(String name, int age){
 9         this.name = name;
10         this.age = age;
11     }
12 
13     public String getName(){
14         return name;
15     }
16 
17     public int getAge(){
18         return age;
19     }
20 
21     public void setName(String name){
22         this.name = name;
23     }
24 
25     public void setAge(int age){
26         this.age = age;
27     }
28 
29     @Override
30     public String toString(){
31         return name+"\t"+age;
32     }
33 }
34 
35 //测试类
36 public class Test13 {
37     public static void main(String[] args) {
38         //实例化对象
39         Student02 stu = new Student02("lili",18);
40         System.out.println(stu.toString());
41         //自定义对象中重写toString方法,会默认调用toString
42         System.out.println(stu);
43 
44     }
45 }

 二、equals()方法

1.方法:public boolean equals(Object obj)----->表示他某个对象是否与此对象“相等”;

2.解释:

  • 对于任何非空引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true;
  • 两个对象的地址值是一样才返回true;

3.equals() 默认比较的是两个对象的地址值,没有实际意义,需要重写;重写规制:比较对象的属性值是否相同;

4.“==” 与 equals() 的比较

  • 相同点:都可以用于来比较是否相等;
  • 不同点:
    • “==”既可以比较基本数据类型,也可以比较引用数据类型,equals() 只能是比较引用数据类型;
    • “==” 比较基本数据类型,比较的是数值是否相同,比较引用数据类型时,比较的是地址值是否相等;equals() 没有重写之前,比较的对象的地址值是否相同,重写之后,比较的是对象的属性值是否相同;

5.案例2:

 1 //equals()方法
 2 
 3 import java.util.Objects;
 4 
 5 class Person{
 6 
 7     private int pid;
 8     private String name;
 9 
10     public Person(){}
11 
12     public Person(int pid,String name){
13         this.pid = pid;
14         this.name = name;
15     }
16 
17     public int getPid(){
18         return pid;
19     }
20 
21     public void setPid(int pid){
22         this.pid = pid;
23     }
24 
25     public String getName(){
26         return name;
27     }
28 
29     public void setName(String name){
30         this.name = name;
31     }
32     //重写的equals比较的是属性值,没有重写过的equals比较的是地址值
33     @Override
34     public boolean equals(Object o){
35         //若本类Person等于新类o
36         if(this == o)
37             return true;
38         //若类不同或者空
39         if(o==null || getClass()!=o.getClass())
40             return false;
41         //声明Person对象person
42         Person person = (Person)o;
43         return pid==person.pid && Objects.equals(name,person.name);
44     }
45     //重写
46     @Override
47     public int hashCode(){//重写 哈希值函数
48         return Objects.hash(pid,name);
49     }
50 }
51 //测试类
52 public class test01 {
53     public static void main(String[] args) {
54 
55         Person p1 = new Person(1001,"Tom");
56         Person p2 = new Person(1002,"Tony");
57 
58         System.out.println(p1.equals(p2));//输出false 证明p1和p2不等
59 
60         Person p3 =p1;
61         System.out.println(p1);//输出Person@1c62a
62         System.out.println(p3);//输出Person@1c62a
63         System.out.println(p1.equals(p3));//输出true 证明p1和p3相等
64 
65     }
66 }

三、String

1.概念:String类代表字符串;字符串是常量,使用final来进行修饰;不能改变地址值,但能改变对象的内容;String对象时不可变的,因此可以共享;字符串字符值是存在堆内存中,字符串的底层是使用字节数组来进行存储。

2.字符串构造方法:

构造方法名称 构造方法的描述
String s = "abc" 字面值底层也会执行字符串的构造方法
public String() 初始化一个新创建的String对象
public String(byte[] bytes) 将字节数组构成一个字符串
public String(byte[] bytes, int offset, int length) 将字节数组按指定的长度内容构建成一个字符串
public String(char [] value) 将字符数组构建成一个新的字符串
public String(char[] value, int offset, int count) 将字符数组指定的长度内容构建成一个字符串

3.字符常用的方法-判断性

方法名称 方法描述
public boolean contains(CharSequence s) 判断字符串中是否包含此字符
public boolean equals(Object anObject) 用于判断两个字符串内容是否相同
public boolean startsWith(String prefix) 此字符串是否以指定的前缀开始
public boolean endWith(String suffix) 此字符串是否以指定的后缀结束
public boolean isEmpty() 当且仅当length()为0时返回true
public int length() 返回此字符串的长度
public boolean equalslgnoreCase(String anotherString) 将此String与另一个String比较,不考虑大小写

案例3:

 1 //键盘录入一个银行卡余额123456789将字符处理结果为123,456,789
 2 
 3 import java.util.Scanner;
 4 
 5 public class test03 {
 6     public static void main(String[] args) {
 7         //实例化Scanner
 8         Scanner input = new Scanner(System.in);
 9         System.out.println("请输入一串字符");
10 
11         String s = input.next();
12         String [] arrays = new String[s.length()];
13         for (int i=0;i<arrays.length;i++){
14             arrays[i]=(s.charAt(i)+"");
15         }
16         //定义一个字符串来进行拼接
17         String str = "";
18         //循环遍历数组
19         for(int i=arrays.length-1;i>=0;i--){
20             //是3的倍数
21             if(i!=0 && i%3 ==0){
22                 str+=arrays[arrays.length-1-i]+",";
23             }else {
24                 str+=arrays[arrays.length-1-i];
25             }
26         }
27         System.out.println(str);
28     }
29 }

4.String的转换性

方法名称 方法描述
public byte[] getBytes() 将字符串转换为字节数组
public char[] toCharArray() 将字符串转换为字符数组
public String toLowerCase() 将所有的字符转换为小写
public String toUpperCase() 将所有的字符转换为大写
public String contact(String str) 在字符串末尾进行拼接(+)
public String replace(Char oldChar,char newChar) 替换字符串指定的内容
public String [] split(String regex) 根据指定的字符来进行拆分
public String trim() 去掉首尾的空格
public static String valueOf(boolean b) 各种数据类型的数据转换为字符串类型数据

案例4:

 1 import java.util.Scanner;
 2 
 3 //键盘录入一串字符,将字符中大写转化成小写,将小写转化为大写,数字以*来代替
 4 public class test04 {
 5     public static void main(String[] args) {
 6         //实例化Scanner
 7         Scanner input = new Scanner(System.in);
 8         System.out.println("请输入一串字符");
 9 
10         String s = input.next();
11         //将字符串转化为字符数组
12         char [] arrays = s.toCharArray();
13         //定义一个字符串来进行拼接
14         String str = "";
15         //使用循环遍历
16         for (int i=0;i<arrays.length;i++){
17             //判断
18             if (arrays[i]>='a'&&arrays[i]<='z'){
19                 str+=(arrays[i]+"").toUpperCase();
20             }else if(arrays[i]>='A'&&arrays[i]<='Z'){
21                 str+=(arrays[i]+"").toLowerCase();
22             }else {
23                 str+="*";
24             }
25         }
26         System.out.println(str);
27     }
28 }

5. StringBuffer 

(1).概念:StringBuffer是线程安全的可变字符序列,一个类似于String的字符串缓冲区;StringBuffer上的主要操作是append和insert方法,可以改变该序列的长度和内容;StringBuffer在多线程中线程安全但效率低;

(2).StringBuffer与String比较:

  • String是不可变字符序列,StringBuffer是可变字符序列;
  • String操作字符串的效率比较低,StringBuffer操作字符串的效率比较高

(3).StringBuffer与StringBuilder比较:

  • 版本不一样,StringBuffer为1.0,StringBuilder为1.5;
  • 多线程安全性不一样,StringBuffer是多线程安全的,StringBuilder是多线程不安全的;
  • 操作字符串效率不一样,StringBuffer效率低,StringBuilder效率高;

(4).StringBuffer的构造方法

构造方法的名称 构造方法的描述
public StringBuffer() 构建一个StringBuffer,初始容量为16个字符
public StringBuffer(int capacity) 构建一个StringBuffer,指定初始容量的字符串缓冲区
public StringBuffer(String str) 将字符串构建成一个StringBUffer对象,字符串的初始容量为16加上字符串参数的长度

(5).常用的方法

方法的名称 方法的描述
public StringBuffer append(boolean b) 在末尾进行追加
public StringBuffer insert(int offset,boolean b) 在指定的位置插入值
public int indexOf(string str) 查找指定字符的索引值
public int capacity() 获取内容的容量
public char charAt(int index) 获取指定索引的内容
public StringBuffer delete(int start, int end) 根据区间来进行删除
public StringBuffer reverse() 控制反转
public String subString(int start, int end) 截取指定的字符
public String toString() 转换为字符串
public int length() 获取StringBuffer中内容的长度
public StringBuffer replace(int start, int end, String str) 替换指定区间的内容

(6)StringBuffer与String之间相互转换

  StringBuffer---->String

    public String toString()【用toString()方法】

    public String(StringBuffer buffer)【构造方法】

  String----->StringBuffer

    public StringBuffer(String str)【构造方法】

    new StringBuffer().append(String str);

 

标签:Java,String,int,StringBuffer,字符串,public,name
From: https://www.cnblogs.com/demon-/p/17125853.html

相关文章

  • java 给定日期获取当月每周开始时间和结束时间
    packagedate;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;importjava.time.temporal.TemporalAdjusters;importjava.util.ArrayList;......
  • ChatGPT Java客户端,OpenAi的Java版本SDK已完成,请火速接入。
    已经支持OpenAI官方的全部api,有bug欢迎朋友们指出,互相学习。源码地址:https://github.com/Grt1228/chatgpt-java不对之处欢迎指正。注意:由于这个接口:https://platform.o......
  • String详解
    String对象的不可变原因,String对象的内存布局,及String对象之间的执行==,equals,+运算时的分析。Author:MsuenbDate:2023-02-16java.lang.String类代表字符串。String......
  • Java----判断两组数字区间是否有交集
    publicstaticvoidmain(String[]args){System.out.println(judge(newint[]{1,3},newint[]{2,5}));System.out.println(judge(newint[]{1,3},ne......
  • C# Java RSA互通
     Java代码1publicstaticvoidmain(String[]args)throwsException{2Stringsign=sign("test",PRIVATEKEY,"UTF-8");3System.out.println......
  • Java获取服务器相关信息
    Java获取服务器相关信息importcom.sun.management.OperatingSystemMXBean;importorg.springframework.util.ClassUtils;importjava.io.BufferedReader;importjava......
  • java 单引号 与 双引号
    publicclassMain{publicstaticvoidmain(String[]args){int[]arr={1,2,3,4,5,6};printArr(arr);}publicstati......
  • JavaWeb邮件发送(感谢狂神)
    电子邮件要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱......
  • 从实现到原理,聊聊Java中的SPI动态扩展
    原创:微信公众号码农参上,欢迎分享,转载请保留出处。八股文背多了,相信大家都听说过一个词,SPI扩展。有的面试官就很喜欢问这个问题,SpringBoot的自动装配是如何实现的?基本......
  • JavaScript体验
    JavaScript体验(来自本站javascript教程)JavaScript实例代码:JavaScript可以直接在HTML输出:document.write("<p>这是一个段落。</p>");JavaScript事件响应:<bu......