d9end
String
java.lang.string
- 字符串是一个特殊的对象
- 一旦初始化不可被改变
========================================
常量
String name = "xxx";
name = "abc";
//xxx是常量不可以被修改
//name是变量,可以被赋值
===========================
- String str = “abc”
- String str1 = new String(“abc”)
他们之间的区别?
1个对象
String str = "abc"
没有new关键字,abc是String pool(串池中的量),在栈区
两个对象
String str1 = new String("abc")
//str1在栈区 String在堆 abc还是在串池
new就分配了内存空间,adb在堆区
===============================
str.length() 区的是字符的个数(中英文一致)
charAt() 提取指定位置上的字符
public class t9 {
public static void main(String[] args){
String str = "Hello World";
//串长度,字符串个数
System.out.println(str.length());
//改变str,打印中文长度
str = "Hello Worl中";
System.out.println(str.length());
//charAt(x);提取指定位置上的字符,空格也是字符
System.out.println(str.charAt(10));
}
}
for(int i = 0; i < str.length(); i ++){
System.out.println(str.charAt(i));
}
}
===========================
tocharArray 拷贝一个字符的数组并产生新的数组,不影响原来的数组
意义在于:str在堆区,输出出来变量可能被修改
copy 一份,可以保证str不变
public char[] toCharArray() {
char[] var1 = new char[this.value.length];
System.arraycopy(this.value, 0, var1, 0, this.value.length);
return var1;
}
===============================
indexOf 返回字符串在母字符串中的位置(索引值,开始搜索的值)
public int indexOf(String var1, int var2) {
return indexOf(this.value, 0, this.value.length, var1.value, 0, var1.value.length, var2);
}
//返回子串在母串中的位置(索引值,开始搜索的位置)
System.out.println(str.indexOf("world",7));
=================================================
endWith startWith
判断是否以xx开头结尾
public boolean startsWith(String var1) {
return this.startsWith(var1, 0);
}
public boolean endsWith(String var1) {
return this.startsWith(var1, this.value.length - var1.value.length);
}
System.out.println(sl.endsWith("Year"));
System.out.println(sl.startsWith("3"));
=================================
Split
切割字符串
=================================
//split切割字符串
str = "Hello World";
String[] strArr = str.split(" ");
System.out.println(strArr.length);
================================
debug
================================
断点:调试程序的时候可以停在断点不动:
F9 resume programe 恢复程序
Alt+F10 show execution point 显示执行断点
F8 Step Over 相当于eclipse的f6 跳到下一步
F7 Step Into 相当于eclipse的f5就是 进入到代码
Alt+shift+F7 Force Step Into 这个是强制进入代码
Shift+F8 Step Out 相当于eclipse的f8跳到下一个断点,也相当于eclipse的f7跳出函数
Atl+F9 Run To Cursor 运行到光标处
ctrl+shift+F9 debug运行java类
ctrl+shift+F10 正常运行java类
alt+F8 debug时选中查看值
=====================================================
String.substring() 截取子串:前包后不包
===============================
public String substring(int var1, int var2) {
if (var1 < 0) {
throw new StringIndexOutOfBoundsException(var1);
} else if (var2 > this.value.length) {
throw new StringIndexOutOfBoundsException(var2);
} else {
int var3 = var2 - var1;
if (var3 < 0) {
throw new StringIndexOutOfBoundsException(var3);
} else {
return var1 == 0 && var2 == this.value.length ? this : new String(this.value, var1, var3);
}
}
}
String s2 = "hello world".substring(6,10);
System.out.println(s2);
为何前包括后不包括
方便使用
str.substring(0,str.length());
====================================
常见的编码
1.asc,美国
7为表示
2.iso-8859-1
欧洲码表,一个byte的8表示
3.GB2312
简体中文 2个字节
4.GBK
中文升级版,融合更多中文
5.Unicode
国际码,包含各国文字
6.utf-8
使用3个byte表示字符
==========================
bty:String args[] 与 String[] args 没有区别,都可以执行,但推荐使用 String[] args,这样可以避免歧义和误读。
Java 中args一般存在main主类方法内,String args[ ]或者String[ ] args表示给主方法传一个字符串数组. 而args是一个字符串数组的变量名,不是关键字,是arguments的缩写,只是一个默认名,一般都习惯性照写
!
计算机中的所有字符都是用Unicode码存储的,占用两个字节
package d6;
public class t99 {
public static void main(String[] args){
char a = 97;
System.out.println(a);
a = '\uFFFF';
System.out.println(a);
a = 0xffff;
System.out.println(a);
int ii = 5;
System.out.println(ii);
ii = 05;
System.out.println(ii);
ii = 0x5;
System.out.println(ii);
}
}
-----------------------
遍历系统中所有字符
int col = 0;
for(int i = 0 ; i <= 0xffff ; i++){
System.out.println((char)i);
col ++;
if(col >= 80 ){
col = 0 ;
System.out.println();
}
}
}}
String str = "abc中";
byte[] bytes = str.getBytes();
System.out.println(bytes);
System.out.println(Charset.defaultCharset().name());