越人歌——先秦
今夕何夕兮,搴舟中流。
今日何日兮,得与王子同舟。
蒙羞被好兮,不訾诟耻。
心几顽而不绝兮,得知王子。
山有木兮木有枝,心悦君兮君不知。
String <不可更改> StringBuffer <可更改>
侧重:字符比较 侧重:字符添加
字符定位 字符插入
子串提取 字符设置
利用String型字符串可方便创建一个StringBuffer型字符串,反之亦然。
valueOf
字符集
1、UTF-8:UCS转换格式。用单字节、双字节或三字节编码字符。
2、UnicodeBig:16位Unicode编码,高位字节在前。
3、UnicodeLittle:16位Unicode编码,低位字节在前。
4、GBK:简化汉字。西文字符用单字节表示,汉子用双字节表示。
注释:
String(byte[] bytes, String enc) //采用指定的字符集编码将字节数组转换成字符串对象
String(byte[] bytes) //采用操作系统平台默认字符集编码
调用System类的getProperty类方法获得平台默认的字符集名称。
字符串的提取与定位:
1、提取:从字符串中读得某个字符或者某个子串。
charAt(int index) //方法返回字符串中指定位置(index)上的字符(char 型)
substring(int beginIndex, int endIndex) //方法返回字符串中指定位置(从beginIndex至endIndex-1)上的子串(String 型)
2、定位:从字符串中搜索某个字符或者某个子串的位置。
indexOf(int ch) //方法返回指定字符(ch)在字符串中第一次出现的位置(int 型)
indexOf(String str) //方法返回指定子串(str)在字符串中第一次出现的位置(int 型)
注释:找不到指定的字符或者子串,方法将返回 -1.
3、另一组方法:
lastIndexOf(int ch) 与 lastIndexOf(String str) //可以返回指定字符或子串在调用串中最后一次出现的位置
eg:
class Sa0503 {
public static void main (String[] args) {
String s = "Java 语言";
int n1 = s.indexOf('a');
int n2 = s.indexOf("a 语");
System.out.println("n1 = " + n1 + " n2 = " + n2);
char c = s.charAt(2);
String s1 = s.substring(3, 5);
System.out.println("c = " + c + " s1 = " + s1);
}
}
4、注意:调用charAt方法时,index的值必须大于等于0、小于字符串的长度;
调用substring方法时,参数beginIndex的值必须大于等于0、小于等于endIndex,参数endIndex的值必须小于等于字符串长度。
否则运行系统会抛出StringIndexOutOfBoundsException例外。(即,不能溢出)
5、提取与定位的其他方法:
提取:
(1)getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) // 从字符串中提取部分字符并复制到指定的目标字符数组dst中
srcBegin:被复制的第一个字符位置
srcEnd-1:被复制的最后一个字符位置
dstBegin:目标数组中存放字符的起始位置
返回类型:void
(2)substring(int beginIndex) // 从字符串中提取一个子串(从beginIndex开始至末尾)并返回
返回类型:String
定位:<返回类型均为int>
(1)indexOf(int ch, int fromIndex) // 返回字符ch在fromIndex之后第一次出现的位置序号
(2)indexOf(String str, int fromIndex) // 返回子串str在fromIndex之后第一次出现的位置序号
(3)lastIndexOf(int ch) //返回子串str最后一次出现的位置序号
(4)lastIndexOf(int ch, int fromIndex) //返回字符ch在fromIndex之前第一次出现的位置序号
(5)lastIndexOf(String str, int fromIndex) //返回子串str在fromIndex之前第一次出现的位置序号
字符串比较:
1、compareTo(String anotherString) // 用于比较调用串与参考串之间的大小。(比较对应位置上字符的Unicode码值大小) 小于返回负值,等于返回0,大于返回正值
2、equals(Object anObject) // 判断两个字符串是否相等(内容相同),参数对象必须是字符串对象。相等返回true,不等返回false
3、equalsIgnoreCase(String anotherString) // 判断字符串是否相等时将忽略字符的大小写区别
运算符==与方法equals是两种不同的运算。==用于判断两个引用类型变量是否指向同一个对象,即比较的是两个变量的引用值。
equals方法则用于判断两个字符串是否相等,即两个字符串是否具有完全相同的内容。
4、compareToIgnoreCase(String str) // 比较两个字符串,不考虑大小写差异<返回值类型:int>
5、endsWith(String suffix) // 判断调用串是否以指定串suffix结尾<返回值类型:boolean>
6、startsWith(String prefix) // 判断调用串是否以指定串prefix开始<返回值类型:boolean>
7、startsWith(String prefix, int toffset) // 判断调用串是否从指定位置toffset算起是否以指定串prefix开始<返回值类型:boolean>
8、regionMatches(int toffset, String other, int ooffset, int len) // 判断两个字符串中的两个子串是否相等<返回值类型:boolean>
// toffset:调用串中子串的起始位置
// ooffset:参数串中子串的起始位置
// len:两个子串的长度
9、regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) // <返回值类型:boolean>
// ignoreCase为false时,与8方法行为相同
// ignoreCase为true时,比较时忽略字母的大小写差异
字符串连接:concat(String str)
字符串替换:replace(char oldChar, char newChar)
字符串去空:trim()
字符串大小写转换:toLowerCase() // <大转小>
toUpperCase(Locale locale) // <小转大>
类方法 valueOf // 是String类定义了的一组重载的valueOf类方法,返回类型:String
valueOf方法可将各种类型的数据转换成字符串形式表示并返回,其可通过类名直接调用。
一个StringBuffer类的实例表示一个可变长、可修改的字符串对象。
StringBuffer类的构造方法:
StringBuffer()
StringBuffer(int length)
StringBuffer(String str) // 实例长度为str.length()、初始容量为长度加16
长度与容量:
length() // StringBuffer类实例的当前长度
capacity() // StringBuffer类实例的当前容量
setLength(int newLength) // 改变实例长度,小于原来长度则被剪裁,大于则添加空字符('\u0000')
ensureCapacity(newLength) // 自动调整实例容量
ensureCapacity(int minimumCapacity) // 改变实例的容量
基本方法:<增删改查,对原来实例内容的修改>
1、append(String str) // 将str的内容添加至当前StringBuffer类实例内容的尾部
2、insert(int offset, String str) // 将str插入到指定位置(offset)
3、delete(int start, int end) // 删去指定位置(从start到end-1)上的一些字符
4、reverse() // 各字符依次颠倒一下
5、查:charAt(int index)、 substring(int start, int end)
"x = " + 16 + y; <===> new StringBuffer("x = ").append(16).append(y).toString();
包装类:每一种基本类型都有一个相应的包装类,这些类都在java.lang包中
引进基本类型包装类的目的:
1、通过包装类将基本类型数据包装起来,从而间接处理基本类型数据。
2、每个包装类都包含一组实用方法,其中很多是静态的,为处理基本类型数据提供了丰富的手段。
包装类共性:
1、都被声明为:final,即这些类都不能有子类。
2、都有一个构造方法,通过一个相应的基本型值生成实例。
3、除了Character,其他包装类都有一个构造方法,可以通过一个表达相应基本型值的字符串生成实例。Boolean会抛出例外。
4、都有一个实例方法xxxValue(),xxx是相应的基本型名。
5、都有一个实例方法equals(Object)。
6、都有实例方法compareTo(Xxx),可以比较当前包装类实例与具有同一种类型的参数包装类实例之间的大小。
7、都有一个实例方法toString(),可以返回一个表示实例所包装的基本型值得字符串对象。
8、除了Character,其他包装类都有一个静态方法valueOf(String s)。
允许基本类型与对应的包装类之间进行自动转换,称为装箱(boxing)和开箱(unboxing)。
装箱:将基本类型的值自动转换成相应的包装类实例
开箱:从包装类实例中自动抽取所包装的基本型值
1、信息的性质:存在普遍性、有序性、相对性、可度量性、可扩充性、可存储、传输与携带性、可压缩性、可替代性、可扩散性、可共享性、时效性。
2、
3、
4、
5、联合概率:
6、当X与Y相互独立时,
7、,其中
8、自信息量:
9、自信息量:的性质:
(1)是非负值
(2)当时,
,即
说明该事件是必然事件。必然事件不含有任何不确定性,所以不含有任何信息量。
(3)当时,
(4)是
的单调递减函数,即
随着
的增大而减小。
10、联合自信息量:
11、条件自信息量: