深入理解final 类String 对象的创建以及内部方法

学习过程中的笔记 :


int indexOf(int ch) :获取字符在字符串中第一次出现的位置,如果不存在,则返回-1
int indexOf(int ch,int fromIndex): 从fromIndex位置开始查找,查找ch第一次出现的位置








获取位置
int indexOf(int ch) :获取字符在字符串中第一次出现的位置,如果不存在,则返回-1
int indexOf(int ch,int fromIndex): 从fromIndex位置开始查找,查找ch第一次出现的位置
int indexOf(String str): 获取str在字符串中第一次出现的位置
int indexOf(String str,int fromIndex): 从fromIndex位置开始查找,查找str第一次出现的




位置
int lastIndexOf(int ch):获取字符在字符串中最后一次出现的位置,如果不存在,则返回-1
int indexOf(String str): 获取str在字符串中第一次出现的位置
int indexOf(String str,int fromIndex): 从fromIndex位置开始查找,查找str第一次出现的位置
int lastIndexOf(int ch):获取字符在字符串中最后一次出现的位置,如果不存在,则返回-1
boolean contains(CharSequence s): 判断是否包含s字符串
boolean equals(Object obj): 判断两个字符串内容是否相同








判断
boolean contains(CharSequence s): 判断是否包含s字符串
boolean equals(Object obj): 判断两个字符串内容是否相同
boolean equalsIgnoreCase(String s): 忽略大小写判断两者的内容是否相同
boolean startsWith(String prefix): 判断是否以某字符串开头
boolean endsWith(String suffix): 判断是否以某字符串结尾
boolean equalsIgnoreCase(String s): 忽略大小写判断两者的内容是否相同
boolean startsWith(String prefix): 判断是否以某字符串开头
boolean endsWith(String suffix): 判断是否以某字符串结尾








1、将字符数组转成字符串
String(char[] cs)
String(char[] cs,int offset,int count)
static String copyValueOf(char[] data) 
static String copyValueOf(char[] data,int offset,int count) 
构造方法
静态方法
转换
1、将字符数组转成字符串
String(char[] cs)
String(char[] cs,int offset,int count)
static String copyValueOf(char[] data) 
static String copyValueOf(char[] data,int offset,int count) 
构造方法
静态方法
2、将字符串转成字符数组:char[] toCharArray()
3、将字节数组转成字符串
String(byte[] bs)
String(byte[] bs,int offset,int length)
String(byte[] bs,String charsetName):使用指定的编码将字节数组转成字符串
4、将字符串转成字节数组: byte[] getBytes()
5、将基本数据类型转成字符串: String valueOf(...)
6、字符串大小写转换
String toLowerCase() : 转小写
String toUpperCase(): 转小写
2、将字符串转成字符数组:char[] toCharArray()
3、将字节数组转成字符串
String(byte[] bs)
String(byte[] bs,int offset,int length)
String(byte[] bs,String charsetName):使用指定的编码将字节数组转成字符串
4、将字符串转成字节数组: byte[] getBytes()
5、将基本数据类型转成字符串: String valueOf(...)
6、字符串大小写转换
String toLowerCase() : 转小写
String toUpperCase(): 转小写




替换:String replace(char oc,char nc)
截取
String subString(int beginIndex)
String subString(int beginIndex,int endIndex) //截取的子字符串不包含endIndex位置上的字





String subString(int beginIndex)
String subString(int beginIndex,int endIndex) //截取的子字符串不包含endIndex位置上的字符
去除两端空格: String trim()
1、如果两个字符串相同,则返回0
按字典顺序比较:int compareTo(String s)
1、如果两个字符串相同,则返回0
2、如果两个字符串完全不同,则返回第一个不同字符的ascii码值的差值
3、如果后面的字符串存在前面字符串,则返回两个字符串长度差
2、如果两个字符串完全不同,则返回第一个不同字符的ascii码值的差值
3、如果后面的字符串存在前面字符串,则返回两个字符串长度差
切割:String[] split(String regularExpression)
1:模拟一个trim方法,去除字符串两端的空格
1、判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。结尾处判断空格




也是如此。
2、当开始和结尾都判断到不是空格时,就是要获取的字符串。
2:将一个字符串进行反转。将字符串中指定部分进行反转,
如"abcdefg",转换后 “abfedcg”
1、曾经学习过对数组的元素进行反转。
2、将字符串变成数组,对数组反转。
3、将反转后的数组变成字符串。
4、只要将或反转的部分的开始和结束位置作为参数传递即可。
3:获取一个字符串在另一个字符串中出现的次数,
如"abkkcdkkefkkskk" 中的kk出现次数
1、定义个计数器。
2、获取kk第一次出现的位置。
3、从第一次出现位置后剩余的字符串中继续获取kk出现的位置。每获取一次就计数一次。
4、当获取不到时,计数完成。
 1、将字符串转成字符数组  toCharArray();
4:对字符串中字符进行自然顺序排序
1、将字符串转成字符数组  toCharArray();
 2、排序//Arrays.sort();
 3、将数组转成字符串 
  2、排序//Arrays.sort();
  3、将数组转成字符串 




八种包装类:




boolean   Boolean
byte      Byte
short     Short
int       Integer
long      Long
char      Charector
float     Float
double    Double




说明包装类可以用于基本数据类型和字符串类型之间的转换




基本数据类型转字符串
String Integer.toString(int )
String Double.toString(double )
字符串转成基本数据类型
int Integer.parseInt("123")
double Double.parseDouble("45.67")




String Integer.toString(int )
String Double.toString(double )
int Integer.parseInt("123")
double Double.parseDouble("45.67")
public static String toHexString(int i)
public static String toOctalString(int i)
public static String toBinaryString(int i)
十进制转成其他进制
public static String toHexString(int i)
public static String toOctalString(int i)
public static String toBinaryString(int i)
public static String toString(int i,int radix)
说明:将指定的数值转成指定进制的字符串
参数1:十进制变量
参数2:进制的权数
public static String toString(int i,int radix)
说明:将指定的数值转成指定进制的字符串
参数1:十进制变量
参数2:进制的权数
1、装箱: Integer  tt = 45;//自动装箱 new Integer(45)
2、拆箱: tt = tt+2;// 先自动拆箱  tt.intValue() +2  再自动装箱new Integer()
jdk1.5的新特性
1、装箱: Integer  tt = 45;//自动装箱 new Integer(45)
2、拆箱: tt = tt+2;// 先自动拆箱  tt.intValue() +2  再自动装箱new Integer()
3、为了提供程序效率,默认初始化了-128~127之间的整数对象
eg1:   Integer a=127,b=127;  boolean r=(a==b); //结果为true
eg1:   Integer a=128,b=128;  boolean r=(a==b); //结果为false
3、为了提供程序效率,默认初始化了-128~127之间的整数对象
eg1:   Integer a=127,b=127;  boolean r=(a==b); //结果为true
eg1:   Integer a=128,b=128;  boolean r=(a==b); //结果为false












Date类
说明: 日期或时间类
Date():生成当前日期对象
Date(long ml); 将long类型转成日期对象
long getTime(): 获取日期时间的long类型数据
说明: 日期或时间类
Date():生成当前日期对象
Date(long ml); 将long类型转成日期对象
long getTime(): 获取日期时间的long类型数据
DateFormat类
说明:把Date表示的日期时间转成我们想要的格式
DateFormat DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.SHORT) 获取日期时




间格式
DateFormat DateFormat.getDateInstance() 获取日期格式
String format(Date d) 格式化日期,并转成字符串
Date parse("2015-03-30") 将字符串转成日期
Date的工具类
DateFormat类
说明:把Date表示的日期时间转成我们想要的格式
DateFormat DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.SHORT) 获




取日期时间格式
DateFormat DateFormat.getDateInstance() 获取日期格式
String format(Date d) 格式化日期,并转成字符串
Date parse("2015-03-30") 将字符串转成日期
SimpleDateFormat类
说明:自己指定的格式来显示日期时间
父类:DateFormat
SimpleDateFormat("yyyy-MM-dd E HH:mm:ss") 生成相应的格式
yyyy:四位的年
MM: 两位的月
dd: 两位的日
HH: 24小时格式
mm: 两位分钟
ss: 两位的秒
S: 毫秒
String  format(Date d): 将日期类按指定的格式转成字符串
SimpleDateFormat类
说明:自己指定的格式来显示日期时间
父类:DateFormat
SimpleDateFormat("yyyy-MM-dd E HH:mm:ss") 生成相应的格式
yyyy:四位的年
MM: 两位的月
dd: 两位的日
HH: 24小时格式
mm: 两位分钟
ss: 两位的秒
S: 毫秒
String  format(Date d): 将日期类按指定的格式转成字符串
说明:日历工具类
Calendar Calendar.getInstance() 获取日历类对象
Calender类
说明:日历工具类
Calendar Calendar.getInstance() 获取日历类对象
int get(int yield) 获取日历中指定的数据
Calendar.YEAR  年
Calendar.MONTH 月,范围:0~11,0是一月,11是十二月
DAY_OF_MONTH 日
DAY_OF_WEEK 一周中的天,即星期一到星期日
Calendar.HOUR 小时
Calendar.MINUTE 分钟
Calendar.SECOND 秒
int get(int yield) 获取日历中指定的数据
Calendar.YEAR  年
Calendar.MONTH 月,范围:0~11,0是一月,11是十二月
DAY_OF_MONTH 日
DAY_OF_WEEK 一周中的天,即星期一到星期日
Calendar.HOUR 小时
Calendar.MINUTE 分钟
Calendar.SECOND 秒
说明:数学相关的工具类
double Math.ceil(34.4) 返回的是大于这个数的最小整数
double Math.floor(34.4) 返回的是小于这个数的最大整数
double Math.pow(2,3) 返回2的3次方
Math类
说明:数学相关的工具类
double Math.ceil(34.4) 返回的是大于这个数的最小整数
double Math.floor(34.4) 返回的是小于这个数的最大整数
double Math.pow(2,3) 返回2的3次方
double Math.random() 生成[0.0,1.0)之是的随机数
Random 随机类
Random()构造方法
int  nextInt(int i);生成[0,i)之间的随机数 
int Math.abs(int d) 获取一个数的绝对值
double Math.random() 生成[0.0,1.0)之是的随机数
Random 随机类
Random()构造方法
int  nextInt(int i);生成[0,i)之间的随机数 
int Math.abs(int d) 获取一个数的绝对值
eg1:   Integer a=128,b=128;  boolean r=(a==b); //结果为false
*********************************************************************************************************
重要内容String创建对象的分析
package day06;




public class StringTest {
public static void main (String [] args){
String a = new String("3");//new 出来两个String类型的变量 只要是用“==”比较比较的是引用 那么就是false
String b = new String("3");//
String c = "3";
System.out.println(a==b);
System.out.println("a是不是和c对象指向的同一个空间"+(a==c)+"\n"+"b是不是和c指向的同一个空间"+(b==c));
System.out.println(a.hashCode());//打印出来hashCode()的值那么两个字符串是相同的那么就说明两个字符串值相同指向同一块地址
System.out.println(b.hashCode());
System.out.println(a.equals(b));//equals 比较的是两个引用的值是不是相同的 如果是相同的那么就会输出true
Integer fist = new Integer(1);//注意的是java的常量池中会首先创建-128--127之间的常量如果存在且不是new出来的Integer()对象那么两个Integer类型的对象就相同的
//就像 Integer a = 127;   integer b = 127;  a==b 是true 但是如果只这样Integer a = 128;   integer b = 128;  a==b就是false 
Integer second = new Integer(1);
System.out.println(fist==second);
}




}








一定要注意的就是这个  如果说常量池中不存在这样的一个String对象那么如果使用了new关键字那么就会创建两个对象 常量池中有一个 栈中创建了一个String类型的对象




eg4:  String s3=new String("aaa"); //创建几个对象? 两个,一个是在常量池中创建"aaa"的常量对象,new String()在内存中创建一个对象
如果说你这样创建一个对象:
String a = new String("a");
String b = new String("a");
String c = "a"
三个对象都是不相同的 前两个第一个创建了自己的对象 然后在常量池中创建了一个对象,第二个自己创建了一个对象,因为常量池中存在“a”那么就I不会在常量池中创建另一个。但是第三个是创建了个对象“c”指向了常量池中的对象
所以a==b或者b==c或者a==c 都是false

























































































































  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值