java基础学习API之String类 六-1
2017-02-21 23:27
501 查看
类 String
一构造方法;
疑问?
String s1 = new String();
System.out.println("s1:"+s1);//结果s1: 和空
对象new对象 输出为什么不是地址值呢?
输出不是地址值就是对string 的 toString 方法进行了重写,跟进源码可以发现:
构造API如下图:
疑问?
二String类的方法
部分方法操作:
其它方法总结:
String类代表字符串。Java 程序中的所有字符串字面值(如
"abc")都作为此类的实例实现。在 lang包下,所以不需要导包。API介绍:
一构造方法;
package wsj02; /** * * @author Angus * 构造方法 * String() * String(byte[] bytes) * String(byte[] bytes, int offset, int length) * String(char[] value) * String(char[] value, int offset, int count) * String(String original) * * 成员方法: * length() 长度 * */ public class StringDemo { public static void main(String[] args) { //方式一:String() String s1 = new String(); System.out.println("s1:"+s1);//结果s1: 对象不是输出的地址值,证明重写了父类的方法。 System.out.println("s1.length:"+s1.length()); //s1.length:0 长度为零 //方式二 String(byte[] bytes) byte[] bys = {97,98,99,100,101}; String s2 = new String(bys); System.out.println("s2:"+s2);//s2:abcde 编码表 System.out.println("s2.length:"+s2.length()); //s2.length:5 //方式三 String(byte[] bytes, int offset, int length) String s3 = new String(bys, 2, 3); System.out.println("s3:"+s3);//s3:cde System.out.println("s3.length:"+s3.length()); //s3.length:3 //方式三 String(String original) String s4 = new String("abcd"); System.out.println("s4:"+s4);//s4:abcd System.out.println("s4.length:"+s4.length()); // s4.length:4 //优化可以直接赋值 String s = "abcde"; } }
疑问?
String s1 = new String();
System.out.println("s1:"+s1);//结果s1: 和空
对象new对象 输出为什么不是地址值呢?
输出不是地址值就是对string 的 toString 方法进行了重写,跟进源码可以发现:
/** * Initializes a newly created {@code String} object so that it represents * an empty character sequence. Note that use of this constructor is * unnecessary since Strings are immutable. */ public String() { this.value = "".value; }
构造API如下图:
疑问?
package wsj02; /** * * @author Angus * 知识点1: 字符串一旦初始化就不可以被改变 * 知识点2; String s1 = new String("abc");和String s2 = "abc" 有区别吗? */ public class StringDemo3 { public static void main(String[] args) { //知识点1: 字符串一旦初始化就不可以被改变 String s = "hello"; s += "world"; System.out.println(s); //helloworld //为什么输出helloworld? // 常量池值不可以被改变 但是引用s可以改变 //知识点2; String s1 = new String("abc");和String s2 = "abc" 有区别吗? //new 会在堆内存中创建对象 然后再常量池中赋值 相当于两个对象 //s2 直接在常量池中找对象,有创建没有不创建。 } }
二String类的方法
部分方法操作:
package wsj02; /** * @author Angus * booleane equals(String str) //判断字符串的内容是否相同,区分大小写 * booleane equalsIgnoreCase(String str) //判断字符串的内容是否相同,不考虑大小写。 * booleane contains(String str) //当且仅当此字符串包含指定的 char 值序列时,返回 true。 * booleane startsWith(String prefix) //测试此字符串是否以指定的前缀开始。 * booleane endsWith(String suffix) //测试此字符串是否以指定的后缀结束。 * booleane isEmpty() //当且仅当 length() 为 0 时返回 true。 */ public class StringDemo4 { public static void main(String[] args) { String s = "HelloWorld"; //booleane equals(String str) //判断字符串的内容是否相同,区分大小写 System.out.println(s.equals("HelloWorld")); System.out.println(s.equals("helloworld")); System.out.println("----------------------"); //booleane equalsIgnoreCase(String str) //判断字符串的内容是否相同,不考虑大小写。 System.out.println(s.equalsIgnoreCase("HelloWorld")); System.out.println(s.equalsIgnoreCase("helloworld")); System.out.println("----------------------"); //booleane contains(CharSequence s) //当且仅当此字符串包含指定的 char 值序列时,返回 true。 System.out.println(s.contains("or")); System.out.println(s.contains("ak")); System.out.println("----------------------"); //booleane startsWith(String prefix) //测试此字符串是否以指定的前缀开始。 System.out.println(s.startsWith("H")); System.out.println(s.startsWith("h")); System.out.println("----------------------"); //booleane endsWith(String suffix) //测试此字符串是否以指定的后缀结束。 //...... //booleane isEmpty() //当且仅当 length() 为 0 时返回 true。 System.out.println(s.isEmpty()); String s2 =""; String s3 =null; System.out.println(s2.isEmpty()); System.out.println(s3.isEmpty()); //Exception in thread "main" java.lang.NullPointerException //at wsj02.StringDemo4.main(StringDemo4.java:44) //空指针报错,判断是数据是否为空 null本身是空操作无意思。 } }
其它方法总结:
1.获取 1.1 获取字符串长度 int length(); 1.2 根据位置获取字符 char charAt(int index); 1.3 根据字符获取在字符中的位置 int indexof(int ch) 返回的是ch在字符串中第一个出现的位置 int indexof(int ch,int FromIndex) 从fromIndex指定位置开始,获取ch在字符串中出现的位置 int indexof(String str); 返回的是str在字符串中第一个出现的位置 int indexof(String str,int FromIndex) 从fromIndex指定位置开始,获取str在字符串中出现的位置 反响索引一个字符出现的位置。 int lastindexof(int ch) 返回的是ch在字符串中第一个出现的位置 int lastindexof(int ch,int FromIndex) 从fromIndex指定位置开始,获取ch在字符串中出现的位置 int lastindexof(String str); 返回的是str在字符串中第一个出现的位置 int lastindexof(String str,int FromIndex) 从fromIndex指定位置开始,获取str在字符串中出现的位置 1.4获取字符串中的一部分字符串,也叫子串。 String subString(int beginindex,intendindex) ; String subString(int beginindex) 2.判断 2.1两个字符串是否相同 equals(Object obj) equalsIgnoreCase(String str) 2.2字符串中是否包含某个字符串 contains(String str) 2.3两个字符串是否以指定字符串开头或结尾 boolean Startswith(String); boolean endswith(String); 2.4字符串是否为空 boolean isEmpty(); 3.字符串转换 3.1将字符串变成字符串数组 String[] split(String regex); 3.2将字符串变成字符数组 char[] toCharArray(); 3.1将字符串变成字节数组 byte[] getBytes(); 3.4将字符串数组变成字符串 构造函数 String(char[]) String(char[],offset,count)将字符数组中的一部分转成字符串。 静态函数 static String copyValueof(char[]) static String copyValueof(char[],offset,count)将字符数组中的一部分转成字符串。 3.5将字符串的字母大小写转换 String toUppercase();大写 String toUppercase();小写 3.6将字符串的内容替换 String repalce(char oldch,char newch); String repalce(String s1,String s2); 3.7将字符串两端空格去掉 String trim(); 3.8将字符串进行连接 String concat(String); 4.比较 compareTo();小返回负数 等返回0 大返回正数
package wsj02; import java.util.Scanner; /** * @author Angus */ public class StringDemo4 { // 键盘录入字符串 实现排序 大小写转换 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入英文字母:"); String s = sc.nextLine(); char[] ch = s.toCharArray(); System.out.println(ch); for (int i = 0; i < ch.length; i++) { // 实现大小写转换 第一种方法 if (ch[i] >= 'a' && ch[i] <= 'z') { ch[i] -= 32; } else if (ch[i] >= 'A' && ch[i] <= 'Z') { ch[i] += 32; } } System.out.println(ch); // 第二种 StringBuilder st = new StringBuilder(); for (int x = 0; x < ch.length; x++) { if (ch[x] >= 'a' && ch[x] <= 'z') { String ss = String.valueOf(ch[x]);// Character.toString st.append(ss.toUpperCase()); } else { String ss = String.valueOf(ch[x]); st.append(ss.toLowerCase()); } } String s1 = new String(st); System.out.println(s1); } }
最后附上JDK使用文档API 下载
相关文章推荐
- java 基础学习-03 api 中String类的学习
- 黑马程序员—17—java基础:有关API的使用学习笔记和心得体会
- 黑马程序员—java基础学习--API其他对象
- JAVA基础学习(十六)--集合三-Map、HashMap,TreeMap与常用API
- JAVA基础--IDE&Object类、常用API-String类、常用API-Arrays、System、StringBuffer&Integer类和Date类、对象数组
- Java基础学习第十二天——String类
- 黑马程序员----------java基础API之String类的介绍和使用
- java基础-API-String类、基本数据类型对象包装类
- java入门学习(3)—循环,选择,基础算法,API概念
- 黑马程序员--Java基础学习笔记【Object类、String类】
- Java基础-String类API简要概述以及面试题
- JAVA学习第二十九课(常用对象API)- String类
- 黑马程序员——Java基础——String类的学习
- java基础学习--String类,StringBuffer和基本数据包装类
- JAVA学习第二十九课(经常使用对象API)- String类
- 黑马程序员--Java基础学习--String类剖析
- JAVA学习第三十课(常用对象API)- String类:类方法练习
- Java基础班学习笔记(11)API常用类(二)
- Java基础班学习笔记(11)API常用类(三)
- java基础学习总结五(递归算法、冒泡排序、查看生成API)