黑马程序员:Java基础篇之String字符串
2013-08-08 16:02
357 查看
Java基础篇之String字符串
字符串特性:
*字符串一旦被初始化就不能改变,谈谈理解?
字符串被初始化后存放在常量池,它是一常量,不能被改变,通常我们看到的改变仅仅是它的引用发生了改变。
*下面两个定义式有啥区别?
String s1 = “abc”;
String s2 = new String(“abc”)
S1作为引用,在内存中对应1个对象,常量池中“abc”;
S2作为引用,在内存中对应2个对象,一个是new的空间,一个是常量池中的“abc”;;
*说说字符串中“==”与equals的区别?
String中的equals方法继承于object类,同时它对该方法进行了复写,使得该方法在比较string对象时,比较的不是内存地址,而是内容。“==”比较的依然是内存地址。
*
String s1 = “abc”;
String s2 = “abc”;
System.out.println(s1==s2);
上述伪代码打印结果是什么?
true
因为字符串“abc”存放在常量池中,当常量池中不可能存储2个相同的字符串,所以引用s1和引用s2指向的是同一个对象。
*方法区中分哪些区域,分别存放的是什么?
非静态方法区---非静态方法数据;
静态方法区---静态方法数据
常量池---字符串等常量
字符串方法:
1. 获取:
1.1字符串中包含的字符数,也就是字符串的长度。
intlength():获取长度。
1.2根据位置获取位置上某个字符。
charcharAt(int index)
1.3根据字符获取该字符在字符串中位置。
int intdexOf(intch):返回的是ch在字符串中第一次出现的位置。
int intdexOf(int ch, int fromindex):从fromIndex指定位置开始,获取ch在字符串中的位置。
int intdexOf(Stringstr):返回的是str在字符串中第一次出现的位置。
intintdexOf(String str, int fromindex):从fromIndex指定位置开始,获取str在字符串中的位置。
注:找不到返回-1。
eg.
2. 判断:
2.1 字符串中是否包含某一个子串;
boolea contains(str)
indexOf(str) 可以索引str第一次出现的位置,如果返回值为-1,表示该str不在字符串中,
所以可以用于指定判断是否包含。该方法既可以判断又可以获取位置。
2.2字符串中是否有内容;
boolean isEmpty() 原理是判断长度是否为0
2.3字符串是否以指定内容开头;
boolean startsWith(str)
2.4字符串是否是以指定内容结尾;
boolean startsWith(str)
2.5判断字符串内容是否相同,复写了Object类中的equals方法。
boolean equals(str)
2.6判断内容是否相同,且忽略大小写。
boolean equalsIgnoreCase()
eg.
3.转换:
3.1将字符数组转成字符串。
构造方法:String(char[])
String(char[],offset,count) 将字符数组中的一部分转车字符串。
静态方法:static String copyValueOf(char[]);
static String copyValueOf(char[] data,int offset,int count);
static String valueOf(char[])
3.2将字符串转成字符数组。
char[] toCharArray()
3.3将字节数组转成字符串。
String(byte[])
String(byte[],offset,count) 将字符数组中的一部分转车字符串。
3.4将字符串转成字符数组。
byte[] getBytes()
3.5将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
注:字符串和字节数组在转换过程中,是可以指定编码表的。
eg.
4.替换:
String replace(oldchar,newchar)
5.切割:
String split(regex)
6.子串:获取字符串的一部分
String substring(begin)从指定位置开始到结尾,如果角标不存在,会出现角
9a7d
标越界异常。
String substring(begin end) 包含头 不包含尾。
eg.
7.转换,去除空格,比较:
7.1 将字符串转成大写或者小写。
String toUpperCase()
String toLowerCase()
7.2 将字符串两端的多个空格去除。
String trim()
7.3对两个字符串进行自然顺序的比较。
int compareTo(string) 字符串中的字符逐个比较ASCII,相等返回0,小于返回负差值,大于返回正差值,
相等继续比较,不相等比完不比。
eg.
字符串练习:
1.模拟一个trim方法,去除字符串两端的空格。
2.将一个字符串进行反转。将字符串中指定部分进行反转。
字符串特性:
*字符串一旦被初始化就不能改变,谈谈理解?
字符串被初始化后存放在常量池,它是一常量,不能被改变,通常我们看到的改变仅仅是它的引用发生了改变。
*下面两个定义式有啥区别?
String s1 = “abc”;
String s2 = new String(“abc”)
S1作为引用,在内存中对应1个对象,常量池中“abc”;
S2作为引用,在内存中对应2个对象,一个是new的空间,一个是常量池中的“abc”;;
*说说字符串中“==”与equals的区别?
String中的equals方法继承于object类,同时它对该方法进行了复写,使得该方法在比较string对象时,比较的不是内存地址,而是内容。“==”比较的依然是内存地址。
*
String s1 = “abc”;
String s2 = “abc”;
System.out.println(s1==s2);
上述伪代码打印结果是什么?
true
因为字符串“abc”存放在常量池中,当常量池中不可能存储2个相同的字符串,所以引用s1和引用s2指向的是同一个对象。
*方法区中分哪些区域,分别存放的是什么?
非静态方法区---非静态方法数据;
静态方法区---静态方法数据
常量池---字符串等常量
字符串方法:
1. 获取:
1.1字符串中包含的字符数,也就是字符串的长度。
intlength():获取长度。
1.2根据位置获取位置上某个字符。
charcharAt(int index)
1.3根据字符获取该字符在字符串中位置。
int intdexOf(intch):返回的是ch在字符串中第一次出现的位置。
int intdexOf(int ch, int fromindex):从fromIndex指定位置开始,获取ch在字符串中的位置。
int intdexOf(Stringstr):返回的是str在字符串中第一次出现的位置。
intintdexOf(String str, int fromindex):从fromIndex指定位置开始,获取str在字符串中的位置。
注:找不到返回-1。
eg.
class StringDemo1 { public static void main(String[] args) { method_get(); } public static void method_get() { String s1="lkiyht0922vanezl"; sop(s1.length());//长度 sop(s1.charAt(3));//根据索引获取字符 sop(s1.indexOf('8'));//根据字符查位置 sop(s1.indexOf('2',2));//根据字符从指定位置开始查位置 sop(s1.indexOf("van"));//根据字符串查位置 sop(s1.indexOf("van",14));//根据字符串从指定位置开始查位置 } public static void sop(Object obj) { System.out.println(obj); } }
2. 判断:
2.1 字符串中是否包含某一个子串;
boolea contains(str)
indexOf(str) 可以索引str第一次出现的位置,如果返回值为-1,表示该str不在字符串中,
所以可以用于指定判断是否包含。该方法既可以判断又可以获取位置。
2.2字符串中是否有内容;
boolean isEmpty() 原理是判断长度是否为0
2.3字符串是否以指定内容开头;
boolean startsWith(str)
2.4字符串是否是以指定内容结尾;
boolean startsWith(str)
2.5判断字符串内容是否相同,复写了Object类中的equals方法。
boolean equals(str)
2.6判断内容是否相同,且忽略大小写。
boolean equalsIgnoreCase()
eg.
class StringDemo2 { public static void main(String[] args) { method_is(); } public static void method_is() { String s = "StringDemo.java"; sop(s.isEmpty()); sop(s.contains("demo")); sop(s.contains("Demo")); sop(s.startsWith("String")); sop(s.endsWith("java")); } public static void sop(Object obj) { System.out.println(obj); } }
3.转换:
3.1将字符数组转成字符串。
构造方法:String(char[])
String(char[],offset,count) 将字符数组中的一部分转车字符串。
静态方法:static String copyValueOf(char[]);
static String copyValueOf(char[] data,int offset,int count);
static String valueOf(char[])
3.2将字符串转成字符数组。
char[] toCharArray()
3.3将字节数组转成字符串。
String(byte[])
String(byte[],offset,count) 将字符数组中的一部分转车字符串。
3.4将字符串转成字符数组。
byte[] getBytes()
3.5将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
注:字符串和字节数组在转换过程中,是可以指定编码表的。
eg.
class StringDemo3 { public static void main(String[] args) { method_exchange(); } public static void method_exchange() { char [] arr= {'a','a','g','r','h','c','s','w','q','h','j'}; String s1=new String(arr); String s2=new String(arr,1,3); String s3="ahsnguilj"; char [] ch=s3.toCharArray(); System.out.print("ch=["); for (int x=0;x<ch.length;x++) { if(x!=ch.length-1) System.out.print(ch[x]+","); else System.out.println(ch[x]+"]"); } sop("s1="+s1); sop("s2="+s2); } public static void sop(Object obj) { System.out.println(obj); } }
4.替换:
String replace(oldchar,newchar)
5.切割:
String split(regex)
6.子串:获取字符串的一部分
String substring(begin)从指定位置开始到结尾,如果角标不存在,会出现角
9a7d
标越界异常。
String substring(begin end) 包含头 不包含尾。
eg.
class StringDemo3 { public static void main(String[] args) { method_replace(); method_split(); method_sub(); } public static void method_replace() { sop("替换"); String s1="vane,man,26";//替换 String s2=s1.replace("26","24"); String s3=s1.replace('v','z'); sop("s1="+s1); sop("s2="+s2); sop("s3="+s3); } public static void method_split() { sop("\r\n切割"); sop("s1="+s1); String s1="vane,man,26";//切割 String [] s2=s1.split(","); for (int x=0;x<s2.length;x++) { sop(s2[x]); } } public static void method_sub() { sop("\r\n获取"); String s1="vane,man,26";//获取 String s2=s1.substring(4); String s3=s1.substring(0,s1.length()); sop("s1="+s1); sop("s2="+s2); sop("s3="+s3); } public static void sop(Object obj) { System.out.println(obj); } }
7.转换,去除空格,比较:
7.1 将字符串转成大写或者小写。
String toUpperCase()
String toLowerCase()
7.2 将字符串两端的多个空格去除。
String trim()
7.3对两个字符串进行自然顺序的比较。
int compareTo(string) 字符串中的字符逐个比较ASCII,相等返回0,小于返回负差值,大于返回正差值,
相等继续比较,不相等比完不比。
eg.
class StringDemo3 { public static void main(String[] args) { method_7(); } public static void method_7() { String s1=" Just For Play "; String s2="abc"; String s3="ABC"; sop(s1.toLowerCase());//转小写 sop(s1.toUpperCase());//转大写 sop(s1.trim());//去除空格 sop(s2.compareTo(s3));//自然顺序比较 } public static void sop(Object obj) { System.out.println(obj); } }
字符串练习:
1.模拟一个trim方法,去除字符串两端的空格。
class StringTest1 { public static void main(String[] args) { String s=" vane zl " ; sop("("+s+")"); s = myTrim(s) ; sop("("+s+")"); } public static String myTrim(String str) { int start = 0,end = str.length()-1; while(start<=end&&str.charAt(start)==' ') start++; while(start<=end&&str.charAt(end)==' ') end--; return str.substring(start,end+1); } public static void sop(Object obj) { System.out.println(obj); } }
2.将一个字符串进行反转。将字符串中指定部分进行反转。
相关文章推荐
- 黑马程序员java学习笔记——String字符串及StringBubuffer容器
- 黑马程序员--Java笔记09--字符串String 及StringBuilder等及其常用方法
- 黑马程序员_java之字符串String及集合
- 黑马程序员java学习日记——字符串String
- (五)黑马程序员——Java中的字符串操作类(String、StringBuilder、StringBuffer)
- 黑马程序员——Java基础-> String字符串
- 黑马程序员之java中操作字符串的常用类String和StringBuffer学习
- 黑马程序员-java学习之String字符串
- 黑马程序员_java字符串之String
- 黑马程序员—Java程序入门学习日记-基础篇1
- 黑马程序员---Java基础篇之常见DOS命令讲解
- java中截取string字符串和以逗号分割,StringBuffer的运用
- JAVA的StringBuffer类( 较长字符串处理时,代替String)
- Java中字符串(String)的存储和赋值原理以及String\StringBuffer\StringBiulder的异同
- Java中String相同字符串的地址是否想同??
- Java——String和StringBuffer/StringBuilder字符串的常用方法
- 黑马程序员——JAVA中的字符串
- Java中字符串探索----String ,StringBuffer ,StringBuilder及字符串缓存池
- 黑马程序员_Java_String
- 黑马程序员——JAVA基础之String和StringBuffer