Object到String的联系
Object基本使用
package com.cloud.day2; /* java是面向对象的语言,核心思想:找适合的对象做适合的事情: 方式一:自定义类,然后通过自定义的类创建对象。 方式二:sun提供了很多的类给我使用,我们只需要认识这些类,我们就可以通过这些类创建对象了。
Object类是所有类的终极父类。任何一个类都继承了Object类。 Object类: Object类常用的方法: toString(); 返回该对象的字符串表示。返回一个字符串用于描述该对象的。 疑问: toString() 有何作用? 重写toString之后,我们直接输出一个对象的时候,就会输出符合我们所需求的格式数据。 equals(Object obj) 用于比较两个对象的内存地址,判断两个对象是否为同一个对象。 hashCode() 返回该对象的哈希码值(大家可以把哈希码就理解成是对象的内存地址)/ java中的规范:一般我们重写了一个类的equals方法,我们都会重写它的hashCode方法。
java是开源....源代码公开... 查看源代码的方式: 方式一:按住ctrl键,单击你需要看的源代码. 方式二:把光标移动到你需要查看代码处按下F3.
为什么我们要查看源代码: 1,查看源代码可以了解别人是如何写出这个技术的,让我们了解的更加的深入。 2. 吸收大牛的思想。 看源代码最忌讳的一点:不要每行代码都弄懂是什么意思,能看个大概猜出他意思就足矣。 */ class Person{ int id; String name; public Person(){} public Person(int id,String name){ this.id=id; this.name=name; } //目前我需要直接输出一个对象的时候,输出的格式是:编号:110 姓名:狗娃 这种格式。目前Object的 //toString方法无法满足子类的需求,那么这时候我们就应该对Object类的toString进行重写。 @Override public String toString() { return "编号:"+this.id+";姓名:"+this.name; } //为什么要重写:Object的equals方法默认比较的是两个对象的内存地址,我目前需要比较的是两个对象的身份证,所以Object类的equals方法不符合我现在的需求。 @Override public boolean equals(Object obj) { Person p = (Person) obj; return this.id == p.id; } @Override public int hashCode() { return this.id; } } public class Demo1 { public static void main(String[] args) { Object o = new Object(); //输出一个对象的时候,实际上在println方法内部会调用这个调用的toString方法 System.out.println(o); System.out.println(o.toString()); Person p1 = new Person(1,"Spring"); System.out.println(p1.toString()); Person p2 = new Person(1,"Summer"); System.out.println("p1==p2?"+p1.equals(p2)); System.out.println("p1="+p1.hashCode()); System.out.println("p1="+p2.hashCode()); } } |
String类基本使用
package com.cloud.day3; /* String 字符串类: 笔试题目:new String("abc")创建了几个对象? 两个对象,一个对象是位于字符串常量池中,一个对象是位于堆内存中。 */ public class Demo1 { public static void main(String[] args) { String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); String str4 = new String("hello"); System.out.println(str1==str2); System.out.println(str2==str3); System.out.println(str3==str4); //是String类重写了Object的equals方法,比较的是两个字符串对象的内容是否一致。 // "=="用于比较引用数据类型数据的时候比较的是两个对象的内存地址,equals方法默认情况下比较也是两个对象的内存地址。 System.out.println(str3.equals(str4)); test(null); } public static void test(String str){ if("中国".equals(str)){ System.out.println("Say,Right"); }else{ System.out.println("Say,Error"); } } } |
String构造方法
package com.cloud.day3; /* String 的构造方法:
String() 创建一个空内容的字符串对象。 String(byte[] bytes) 使用一个字节数组构建一个字符串对象 String(byte[] bytes, int offset, int length) bytes : 要解码的数组 offset:指定从数组中那个索引值开始解码。 length: 要解码多个元素。
String(char[] value) 使用一个字符数组构建一个字符串。 String(char[] value, int offset, int count) 使用一个字符数组构建一个字符串,指定开始的索引值,与使用字符个数。 String(int[] codePoints,int offset,int count) String(String original) 记住:使用字节数组或者字符数组都可以构建一个字符串对象。 */ public class Demo2 { public static void main(String[] args) { String str = new String(); byte[] buf={97,98,99}; str = new String(buf); str = new String(buf,1,2); System.out.println(str); char[] arr={'中','国','人'}; str = new String(arr); System.out.println(str); str = new String(arr,1,2); System.out.println(str); int[] arr2 = {65,66,67}; str = new String(arr2,0,2); } } |
String获取方法
package com.cloud.day3; /* 2.2 获取方法 int length() 获取字符串的长度 char charAt(int index) 获取特定位置的字符 (角标越界) int indexOf(String str) 查找子串第一次出现的索引值,如果子串没有出现在字符串中,那么则返回-1表示。 int lastIndexOf(String str) 查找子串最后一次出现的索引值 , 如果子串没有出现在字符串中,那么则返回-1表示 */ public class Demo3 { public static void main(String[] args) { String str = "abc中国ab中国"; System.out.println(str.length()); System.out.println(str.charAt(3)); System.out.println(str.indexOf("中国")); System.out.println(str.lastIndexOf("中国")); } } |
String判断转换方法
package com.cloud.day3; import java.util.Arrays; /* 2.3 判断方法 boolean endsWith(String str) 是否以指定字符结束 boolean isEmpty()是否长度为0 如:“” null V1.6 boolean contains(CharSequences) 是否包含指定序列应用:搜索 boolean equals(Object anObject) 是否相等 boolean equalsIgnoreCase(String anotherString) 忽略大小写是否相等
2.4 转换方法 char[] toCharArray() 将字符串转换为字符数组 byte[] getBytes(); 字节数组与字符数组、字符串他们三者之间是可以互相转换。 */ public class Demo4 { public static void main(String[] args) { String str = "Demo.java"; System.out.println(str.endsWith("ja")); System.out.println(str.contains("Demo")); System.out.println("DEMO.JAVA".equals(str)); System.out.println("DEMO.JAVA".equalsIgnoreCase(str)); char[] buf = str.toCharArray(); System.out.println(Arrays.toString(buf)); byte[] buf2 = str.getBytes(); System.out.println(Arrays.toString(buf2)); } } |
String分割切换方法
package com.cloud.day3;
import java.util.Arrays;
/* 其他方法 String replace(String oldChar, String newChar) 替换 String[] split(String regex) 切割
String substring(int beginIndex) 指定开始的索引值截取子串 String substring(int beginIndex, int endIndex)指定开始与结束的索引值截取子串
String toUpperCase() 转大写 String toLowerCase() 转小写 String trim() 去除字符串首尾的空格 */ public class Demo5 { public static void main(String[] args) { String str = "今天晚上不考试"; System.out.println("指定新内容替换旧的内容:"+ str.replace("不", "要好好")); str = "大家-下-午-好"; String[] arr = str.split("-"); //根据指定的字符进行切割。 System.out.println("字符串数组的内容:"+ Arrays.toString(arr)); str = "上海和平大饭店"; System.out.println("指定开始的索引值截取子串:"+ str.substring(2)); System.out.println("指定开始的索引值截取子串:"+ str.substring(2,6)); //包头不包尾 注意:截取的内容是包括开始的索引值,不包括结束的索引值,截取的位置是结束的索引值-1. str = "abC中国"; System.out.println("转大写:" + str.toUpperCase()); str = "AbdfSDD"; System.out.println("转小写:"+ str.toLowerCase()); str = " 大家最近 都非常努力 "; System.out.println("去除字符串首尾的空格:"+ str.trim()); } } |