------- android培训、java培训、期待与您交流! ----------
String(字符串)类
(1)有很多字符组成的字符序列叫做字符串.
(2)创建字符串的对象
A:直接给字符串对象赋值
String s = "Hello";
B:通过构造方法传递字节数组参数
byte[] bys = {97,98,99,100,101};
String s = new String(bys);
String s = new String(bys,1,3); //从1开始,取得3个
C:通过构造方法传递字符数组参数
char[] chs = {'h','e','l','l','o'};
String s = new String(chs);
String s = new String(chs,1,3);
面试题:
String s1 = "haha";
String s2 = "haha";
sop(s1==s2);
sop(s1.equals(s2));
String s3 = new String("haha");
sop(s1==s3);
sop(s1.equals(s3));
==和equals什么时候使用:
1:比较基本数据类型的时候使用 ==
2:比较引用数据类型的时候用
== 表示比较的是对象的地址值
equals 没有重写Object的方法,比较的是地址值.
重写了Object的方法,比较的是什么,根据重写来定.
(3)字符串的功能使用
A:判断
**equals 判断字符串的内容是否相同,区分大小写
**equalsIgnoreCase 判断字符串的内容是否相同,不区分大小写
**startsWith 是否以指定的字符串开头
**endsWith 是否以指定的字符串结尾
**contains 判断某个字符串是否包含指定的字符串
**isEmpty 判断字符串是否为空
练习:模拟登录,给三次机会,并提示还有几次.
B:获取
**charAt 获取指定索引处的字符
**length 获取字符串的长度
***注意: 数组length属性,字符串有length方法.
*******查找*****************
**indexOf 获取指定字符/字符串第一次出现的索引
indexOf(char/String,fromIndex) 从指定位置开始 获取指定字符/字符串第一次出现的索引
lastIndexOf
lastIndexOf(char/String,formIndex)
*******截取********
**substring(int index) 从指定位置到末尾截取字符串.
subString(int beginIndex,int endIndex) 从指定开始位置,到指定的末尾位置,截取字符串.
***注意: 左闭右开.
练习:给定一个字符串统计,统计大写字母,小写字母,数字出现的个数.
***注意:不包括特殊字符
C:转换
**byte[] getBytes(String s) 把字符串转换成一个字节数组
**char[] toCharArray(String s) 把字符串转成一个字符数组 重点
**static String copyValueOf(char[] data)
返回指定数组中表示该字符序列的 String。
static String copyValueOf(char[] data, int offset, int count)
返回指定数组中表示该字符序列的 String。
**把基本数据类型转成字符串 次重点
int x = 3;
如何得到字符串呢: x+""
现在怎么写? String.valueOf(x)
**toUpperCase 把字符串中所有字符串转成大写
**toLowerCase 把字符串中所有字符串转成小写
**concat 字符串的连接
练习:给定一个字符串,把它变成首字母大写,其他字母小写的字符串.
***链式编程
***String s = "afassfHaADSIOPFUAASFasfd";
sop(s.substring(0,1).toUpperCase().concat(s.substring(1).toLowerCase()));
D:其他
**替换 replace(char oldChar,char newChar)
replace(String oldString,String newString)
**切割
String[] split(String str)
**去除字符串两端的空格
String trim()
**按照字典(自然,a-z)顺序对字符串进行比较.
compareTo
StringBuffer:字符串的缓冲区,缓冲区主要用于存储数据
-------添加
StringBuffer添加元素使用的是同一个对象的区域,并且可以添加任意类型的元素。
append(); //添加元素(可以添加任何数据类型的值)
insert();//在指定的地方插入元素
-----删除元素
StringBuffer delete(int start,int end)删除指定范围内的字符串
StringBuffer delete(int index);删除指定位置的字符
void setCharAt(int index,char ch); 替换指定位置的字符
------其他的方法
StringBuffer replace(int start,int end,String str); 替换指定范围内的字符串
String substring(int start);从指定位置截取到末尾
String substring(int start,int end );截取指定范围内的字符串
StringBuffer reverse()反转
StringBuffer和String的相互转换
不能直接把一字符串对象赋值给StringBuffer对象
------string到StringBuffer
String s="";
//第一种方法从String变成StringBuffer
StringBuffer sb=new StringBuffer(s);
第二种方法
sb.append(s);
----把 StringBuffer转成String
StringBuffer sb=new StringBuffer();
String ss=sb.toString();
面试题:三者区别?
1:StringBuffer和StringBuilder都是可变的字符序列。
而String一旦被赋值,内容就不可以再改变。
2:StringBuffer是线程安全的,效率低。
StringBuilder是线程不安全的,效率高。
StringBuilder就是用来替代StringBuffer。
JDK的升级:
A:效率
B:安全
C:简化书写
效率和安全是相对的。
-----------------包装类------------
为了方便我们知道整数的最大值,进制的转换。
java就对基本数据类型都提供了对应的封装类类型
byte Byte
short Short
int Integer
long Long
char Character
boolean Boolean
float Float
学习Integer类的构造方法
Integer(int value):把基本数据类型的int值转换成Integer对象类型
int x=10;
Integer i=new Integer(x);
System.out.println(i);
Integer(String s):要求被转换的字符串是全部由数字字符组成的字符
String s="10";
Integer it=new Integer(s);
System.out.println(s);
NumberFormatException:抛出异常
Integer类要掌握的方法:
int----String类型 :把int类型的转成String类型的
String.valueOf(int x)
Integer.toString(int x);
String---int类型 :把String类型的转成int类型的
Integer.parseInt(String s);
String --Integer--int
Integer i=new Integer(s);
int x=i.intValue(i);
包装类到底是怎么包装的
它是通过
装箱:Integer i=100;这样,其实是把一个基本的数据类型给装箱成一对象类型
拆箱:i+100;其实底层调用i.intValue方法,也就是拆箱动作。最后在把计算的结果300装箱成Integer类型
拆箱其实就是i.intValue()+100;
jdk5.0以后的,拆箱和装箱动作,让我们在进行计算的时候,方便了很多
但是带来了问题,需要我们在进行计算前,判断对象是不是null.
面试题:
*
* 一个字节:0 1111111
* 有符号位的话,最大的值是127.
*
* 包装类里面直接赋值的时候,127以下的值会在一个常量池里。直接从常量池获取。
*/
public class IntegerTest {
public static void main(String[] args) {
// 定义两个Integer类型的数据
// true,false
Integer i1 = new Integer(128);
Integer i2 = new Integer(128);
// Integer类型重写了equals方法,比较的是值
System.out.println("equals:" + i1.equals(i2)); //true;
System.out.println("==:" + (i1 == i2)); // false //比较对象时,==是直接比较的地址值
// true,false
Integer i3 = 128;
Integer i4 = 128;
System.out.println("equals:" + i3.equals(i4)); //true;
System.out.println("==:" + (i3 == i4)); //false
System.out.println("*****************************");
// true,false
Integer i5 = new Integer(127);
Integer i6 = new Integer(127);
System.out.println("equals:" + i5.equals(i6)); //true; 是比较的两个数在常量池里面的数
System.out.println("==:" + (i5 == i6)); //false; 是比较的两个数的地址值
// true,true
Integer i7 = 127;
Integer i8 = 127;
System.out.println("equals:" + i7.equals(i8)); //true;
System.out.println("==:" + (i7 == i8)); //true;
}
}
------
Math:数学运算的类
特点:没有构造方法,都是静态的成员
成员:
PI
E
方法:
abs:绝对值
ceil:大于等于参数的最小整数
floor:小于等于参数的最大整数
max: 获取两个值中较大的值
min:获取两个值中较小的值
pow:获取x的y次方的值
random:产生一个随机数,范围[0.0~1.0]
round:四舍五入
sqrt:平方根
// 要掌握的属性
System.out.println("PI:" + Math.PI);
System.out.println("E:" + Math.E);
// 要掌握的功能
System.out.println("abs:" + Math.abs(-12));
System.out.println("ceil:" + Math.ceil(-12.66));
System.out.println("floor:" + Math.floor(-12.66));
System.out.println("max:" + Math.max(-12, 23));
System.out.println("min:" + Math.min(-12, 23));
System.out.println("pow:" + Math.pow(2, 5));
System.out.println("round:" + Math.round(12.567));
System.out.println("sqrt:" + Math.sqrt(16));
System.out.println("********************************");
System.out.println("random:" + Math.random());
// 我要产生一个1-100之间的数据
System.out.println("random:" + ((int) (Math.random() * 100) + 1));
------- android培训、java培训、期待与您交流! ----------