1:String类的三个练习
(1)把字符串按照字符的自然顺序排序并输出。掌握
(2)查找大串中小串的出现次数。
public static int getCount(String fuString,String ziString)
{
int count = 0;
int index = fuString.indexOf(ziString);
while(index!=-1)
{
count++;
fuString = fuString.substring(index+ziString.length());
index = fuString.indexOf(ziString);
}
return count;
}
改进后的代码:
public static int getCount(String fuString,String ziString)
{
int count = 0;
int index = 0;
//条件不同:在这里做了三件事情(查,赋值,判断)
while((index=fuString.indexOf(ziString))!=-1)
{
count++;
fuString = fuString.substring(index+ziString.length());
}
return count;
}
(3)查找两个字符串中的最大子串。
public static String getSubString(String s1,String s2)
{
String maxString,minString;
maxString = s1.length()>s2.length()?s1:s2;
minString = maxString.equals(s1)?s2:s1;
for(int x=0; x<minString.length(); x++)
{
for(int start=0,end=minString.length()-x; end<=minString.length(); start++,end++)
{
String temp = minString(start,end);
if(maxString.contains(temp))
{
return temp;
}
}
}
return null;
}
2:StringBuffer和StringBuilder(重点)
(1)StringBuffer是字符串缓冲类。可以看成是一个容器。
A:StringBuffer和String的区别
StringBuffer是长度可变的,每次的操作都采用的是同一个空间。
而String长度是固定的,每次操作都是一个新的字符串空间。
B:StringBuffer和数组的区别
StringBuffer是长度可变的,并且可以存储不同类型的数据。
而数组时长度固定的,只能存储同一种类型的数据。
(2)StringBuffer构造方法
A:StringBuffer sb = new StringBuffer();
B:StringBuffer sb = new StringBuffer(50);
C:StringBuffer sb = new StringBuffer("hello");
测试了两个方法:
capacity():指的是缓冲区能够存储的元素个数
length():指的是实际存储的元素个数
(3)StringBuffer的功能方法
A:添加
append:在末尾追加元素
insert:在指定位置添加元素,其后元素后移
B:删除
deleteCharAt:删除指定位置的单个字符
delete:删除从起始位置开始到结束位置的多个字符。
包括左边,不包括右边。
C:替换
replace:用新的字符串替换从指定位置开始到结束位置的字符串
D:截取
subString:默认是从指定位置截取到末尾。
如果指定了起始位置和结束位置,那么就是截取指定长度的字符串。
包括左边,不包括右边。
E:反转
reverse:把字符串的内容进行了反转
(4)StringBuffer和StringBuilder的区别
StringBuffer是同步的。-- 线程安全的
StringBuilder是不同步的。 -- 线程不安全的。
JDK的升级:
A:效率
B:安全
C:简写
3:基本数据类型的包装类
(1)为了方便我们对象基本类型进行操作,java就对每种基本类型进行了封装。
对应封装类如下
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
好处:举例
比如说int的最大值,最小值,以及进制转换变的非常简单。
(2)Integer的构造方法
A:Integer i = new Integer(100);
B:Integer i = new Integer("100");
注意:字符串变成Integer类型数据的时候,可能会有一个异常。
NumberFormatException。
要求是:这个字符串中只能包含数字字符。
(3)int类型和String类型的转换(重点)
A:int -- String
int num = 100;
String s = String.valueOf(num)
String s = Integer.toString(num)
B:String -- int
String s = "100";
int i = Integer.parseInt(s);
(4)基本类型包装类在JDK5以后的新特性
自动装箱和拆箱的操作。
Integer i = 100; //装箱 new Integer(100);
i += 200; //拆箱 i.intValue()+200 结果是300
//装箱 new Integer(300)
注意:Integer最好检查一下是否为null。否则会有空指针异常。
(5)Integer的一个小细节
在byte范围内,直接赋值,值被重用。
Integer i1 = 128;
Integer i2 = 128;
sop(i1==i2); //false
Integer i3 = 127;
Integer i4 = 127;
sop(i3==i4); //true
4:Math类的使用
(1)Math类:没有构造方法,那么如何使用方法呢?
A:这个类中的所有属性和方法都是静态的。
B:通过单例设计模式在类的功能中提供了一个获取该类对象的功能。
(2)需要掌握的属性和方法:
* PI:π的值
* E:自然对数的底数
* abs:返回某个数据的绝对值
* max:返回两个数中较大的那个
* min:返回两个数中较小的那个
* sqrt:返回的是正平方根
* cbrt:返回的是立方根
* pow:返回第一个参数的第二个参数次幂的值
* ceil:大于等于参数,的最小整数
* floor:小于等于参数,的最大整数
* round:返回四舍五入一个值
* random:返回一个随机数,范围[0.0-1.0)
* 获取一个1-100直接的随机数:
* (int)(Math.random() * 100)+1
(1)把字符串按照字符的自然顺序排序并输出。掌握
(2)查找大串中小串的出现次数。
public static int getCount(String fuString,String ziString)
{
int count = 0;
int index = fuString.indexOf(ziString);
while(index!=-1)
{
count++;
fuString = fuString.substring(index+ziString.length());
index = fuString.indexOf(ziString);
}
return count;
}
改进后的代码:
public static int getCount(String fuString,String ziString)
{
int count = 0;
int index = 0;
//条件不同:在这里做了三件事情(查,赋值,判断)
while((index=fuString.indexOf(ziString))!=-1)
{
count++;
fuString = fuString.substring(index+ziString.length());
}
return count;
}
(3)查找两个字符串中的最大子串。
public static String getSubString(String s1,String s2)
{
String maxString,minString;
maxString = s1.length()>s2.length()?s1:s2;
minString = maxString.equals(s1)?s2:s1;
for(int x=0; x<minString.length(); x++)
{
for(int start=0,end=minString.length()-x; end<=minString.length(); start++,end++)
{
String temp = minString(start,end);
if(maxString.contains(temp))
{
return temp;
}
}
}
return null;
}
2:StringBuffer和StringBuilder(重点)
(1)StringBuffer是字符串缓冲类。可以看成是一个容器。
A:StringBuffer和String的区别
StringBuffer是长度可变的,每次的操作都采用的是同一个空间。
而String长度是固定的,每次操作都是一个新的字符串空间。
B:StringBuffer和数组的区别
StringBuffer是长度可变的,并且可以存储不同类型的数据。
而数组时长度固定的,只能存储同一种类型的数据。
(2)StringBuffer构造方法
A:StringBuffer sb = new StringBuffer();
B:StringBuffer sb = new StringBuffer(50);
C:StringBuffer sb = new StringBuffer("hello");
测试了两个方法:
capacity():指的是缓冲区能够存储的元素个数
length():指的是实际存储的元素个数
(3)StringBuffer的功能方法
A:添加
append:在末尾追加元素
insert:在指定位置添加元素,其后元素后移
B:删除
deleteCharAt:删除指定位置的单个字符
delete:删除从起始位置开始到结束位置的多个字符。
包括左边,不包括右边。
C:替换
replace:用新的字符串替换从指定位置开始到结束位置的字符串
D:截取
subString:默认是从指定位置截取到末尾。
如果指定了起始位置和结束位置,那么就是截取指定长度的字符串。
包括左边,不包括右边。
E:反转
reverse:把字符串的内容进行了反转
(4)StringBuffer和StringBuilder的区别
StringBuffer是同步的。-- 线程安全的
StringBuilder是不同步的。 -- 线程不安全的。
JDK的升级:
A:效率
B:安全
C:简写
3:基本数据类型的包装类
(1)为了方便我们对象基本类型进行操作,java就对每种基本类型进行了封装。
对应封装类如下
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
好处:举例
比如说int的最大值,最小值,以及进制转换变的非常简单。
(2)Integer的构造方法
A:Integer i = new Integer(100);
B:Integer i = new Integer("100");
注意:字符串变成Integer类型数据的时候,可能会有一个异常。
NumberFormatException。
要求是:这个字符串中只能包含数字字符。
(3)int类型和String类型的转换(重点)
A:int -- String
int num = 100;
String s = String.valueOf(num)
String s = Integer.toString(num)
B:String -- int
String s = "100";
int i = Integer.parseInt(s);
(4)基本类型包装类在JDK5以后的新特性
自动装箱和拆箱的操作。
Integer i = 100; //装箱 new Integer(100);
i += 200; //拆箱 i.intValue()+200 结果是300
//装箱 new Integer(300)
注意:Integer最好检查一下是否为null。否则会有空指针异常。
(5)Integer的一个小细节
在byte范围内,直接赋值,值被重用。
Integer i1 = 128;
Integer i2 = 128;
sop(i1==i2); //false
Integer i3 = 127;
Integer i4 = 127;
sop(i3==i4); //true
4:Math类的使用
(1)Math类:没有构造方法,那么如何使用方法呢?
A:这个类中的所有属性和方法都是静态的。
B:通过单例设计模式在类的功能中提供了一个获取该类对象的功能。
(2)需要掌握的属性和方法:
* PI:π的值
* E:自然对数的底数
* abs:返回某个数据的绝对值
* max:返回两个数中较大的那个
* min:返回两个数中较小的那个
* sqrt:返回的是正平方根
* cbrt:返回的是立方根
* pow:返回第一个参数的第二个参数次幂的值
* ceil:大于等于参数,的最小整数
* floor:小于等于参数,的最大整数
* round:返回四舍五入一个值
* random:返回一个随机数,范围[0.0-1.0)
* 获取一个1-100直接的随机数:
* (int)(Math.random() * 100)+1