java学习之路--java对象(1)--重点String类的常用方法
来源:互联网 发布:centos selinux关闭 编辑:程序博客网 时间:2024/05/22 11:21
第五章:
1.面向对象的特征
(1):封装性
(2):多态
(3):继承
Java多态分为:方法重载和对象多态两种
这里说下对象多态:子类对象可以和父类对象互转
2.对象的创建
例如: Person p=new Person()
类是一种引用的数据类型,所以在穿件也需要分配内存空间,类名称存在栈内存中,是对象存在堆内存中
3.封装
记住对象中的所有属性都必须封装,就是(private),通过getter,setter来访问
4.构造方法
在创建对象的时候,你会看见new Person(),这个Person()是一个方法,这个方法就是构造方法,构造方法的作用就是用来初始化数据。在创建对象的时候,如果类中没有构造方法,系统会自动分配一个默认的不带参数构造方法。
5.匿名对象
匿名对象就是没有明确的给出名字的对象,new Person()就是一个匿名对象。匿名对象只在堆内存中分配内存来存储对象,而不在栈内存中开辟空间来装对象的引用。一般匿名类值使用一次。
6.String(这个非常重要,非常频繁的用到,要百分百的掌握)
(1).String类用equals来比较两个对象是否值相等(如果用==就必须保证地址也一致才OK)
(2).String类两种实例化
a. String s="abc";
b. String s=new String("abc");
这两种实例化有什么不同?
在弄清楚这个之前一定要弄清楚一点,就是一个字符串就是一个String类的匿名对象。
@Test
public void test(){
//验证一个字符串就是一个匿名对象
System.out.println("hello".equals("hello"));
}
结果:
true
实际上String s="abc",就是把一个已经在堆内存中开辟好的辅助给一个名称而已,这样做的目的:看代码
public void test1(){
//验证一个字符串就是一个匿名对象
String s="abc";
String f="abc";
System.out.println("是否相等"+(s.equals(f)));
System.out.println("是否相等"+(s==f));
}
结果:
是否相等true
是否相等true
这说明,一个堆内存存在的对象,即使被赋值给多个名称,但是地址,值不变。。。
补充一下:
对于以上String类的操作,在java中成为共享设计,这种设计思路就是,在java中形成一个对象池,在这个对象池中保存多个对象,新实例化一个对象,如果在对象池中已经开辟了空间,则不再新开辟,而是直接取出使用,String类就是采用这样的设计
看看下面的代码:
public void test2(){
String s=new String("abc");
String f=new String("abc");
System.out.println("是否相等"+(s.equals(f)));
System.out.println("是否相等"+(s==f));
}
结果:
是否相等true
是否相等false
(3)字符串类容的不可改变性
其实理解这个看下代码就很容易理解了
public void test3(){
String a="abc";
String b="abc";
a=a+b;
System.out.println(a);
}
结果:
abcabc
看到结果你是不是想说,这不是改变了吗,但是你想想一个字符串就是一个匿名对象,输出的a是abcabc,那说明在堆中就有一个abcabc的索引(或者就是有这个的空间,而刚开始创建的a="abc",并没有改变)
(4)String 类常用的方法
下面就是对这些常用方法使用的代码:
public void test4(){
//字符串和数组的互转
String s="hello";
char c[]=s.toCharArray();//将字符串变为字符数组
for(char i :c){
System.out.print(i+"\t");
}
System.out.println("");
String a=new String(c);//将全部的字符数组变为String
String st=new String(c,0,4);//将部分的字符数组变为字符串
System.out.println(a);
System.out.println(st);
}
结果:
h e l l o
hello
hell
public void test5(){
//取出指定位置的字符串
String s="abcde";
System.out.println(s.charAt(2));//取出第3个字符,这里是根据索引来取得,索引是从0开始
}
结果:
c
public void test6(){
//字符串与byte数组间的互相转换
String s="abcde";
byte a[]=s.getBytes();//将字符串变为byte数组
System.out.println(new String(a));//将byte数组转为字符串
System.out.println(new String(a,0,3));//将byte数组转为字符串
}
结果:
abcde
abc
补充:写个数组与byte的转换,是因为后期再IO流中经常会使用到
public void test7(){
String s="abcde";
System.out.println(s.length());//取一个字符串的长度
char a[]=s.toCharArray();
System.out.println(a.length);//取一个数组的长度
}
结果:
5
5
补充:看看取得数组的长度的方法和字符串长度的方法用说明不同?
字符串取长度的length()是有括号的
public void test8(){
String s="abcde";
System.out.println(s.indexOf("a"));//查找一个指定的字符串是否存在
System.out.println(s.indexOf("ac"));
}
结果:
0
-1
补充:如果存在就返回索引值,不存在就返回-1
public void test9(){
String s=" abcde ";
System.out.println(s.trim());//去掉左右空格
String a="abc dd dd dd";
System.out.println(a.trim());
}
结果:
abcde
abc dd dd dd
补充:是去掉左右空格,不会去掉中间的空格
public void test10(){
String s="abcde";
System.out.println(s.substring(1));//字符串的截取,冲索引值为1的地方开始到末尾
System.out.println(s.substring(1, 3));//索引1开始,3结束
}
结果:
bcde
bc
public void test11(){
String s="ab cde";
String a[]=s.split(" ");//按指定的方式拆分,这里是按空格的方式(拆分必须是字符串正有的)
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
for(String b:a){
System.out.println(b);
}
}
结果:
ab
cde
ab
cde
public void test12(){
String s="abcde";
String a="ABCDE";
System.out.println(s.toUpperCase());//转大写
System.out.println(a.toLowerCase());//转小写
}
结果:
ABCDE
abcde
public void test13(){
String s="abcde";
System.out.println(s.startsWith("abc"));//判断是否已什么开头
System.out.println(s.endsWith("de"));//判断是否以什么结尾
}
结果:
true
true
public void test14(){
String s="abcde";
String a="ABCDE";
System.out.println(s.equalsIgnoreCase(a));//不区分大小写比较
}
结果:
true
public void test15(){
String s="aaade";
System.out.println(s.replaceAll("a", "m"));//替换
System.out.println(s.replace("a", "d"));
}
1.面向对象的特征
(1):封装性
(2):多态
(3):继承
Java多态分为:方法重载和对象多态两种
这里说下对象多态:子类对象可以和父类对象互转
2.对象的创建
例如: Person p=new Person()
类是一种引用的数据类型,所以在穿件也需要分配内存空间,类名称存在栈内存中,是对象存在堆内存中
3.封装
记住对象中的所有属性都必须封装,就是(private),通过getter,setter来访问
4.构造方法
在创建对象的时候,你会看见new Person(),这个Person()是一个方法,这个方法就是构造方法,构造方法的作用就是用来初始化数据。在创建对象的时候,如果类中没有构造方法,系统会自动分配一个默认的不带参数构造方法。
5.匿名对象
匿名对象就是没有明确的给出名字的对象,new Person()就是一个匿名对象。匿名对象只在堆内存中分配内存来存储对象,而不在栈内存中开辟空间来装对象的引用。一般匿名类值使用一次。
6.String(这个非常重要,非常频繁的用到,要百分百的掌握)
(1).String类用equals来比较两个对象是否值相等(如果用==就必须保证地址也一致才OK)
(2).String类两种实例化
a. String s="abc";
b. String s=new String("abc");
这两种实例化有什么不同?
在弄清楚这个之前一定要弄清楚一点,就是一个字符串就是一个String类的匿名对象。
@Test
public void test(){
//验证一个字符串就是一个匿名对象
System.out.println("hello".equals("hello"));
}
结果:
true
实际上String s="abc",就是把一个已经在堆内存中开辟好的辅助给一个名称而已,这样做的目的:看代码
public void test1(){
//验证一个字符串就是一个匿名对象
String s="abc";
String f="abc";
System.out.println("是否相等"+(s.equals(f)));
System.out.println("是否相等"+(s==f));
}
结果:
是否相等true
是否相等true
这说明,一个堆内存存在的对象,即使被赋值给多个名称,但是地址,值不变。。。
补充一下:
对于以上String类的操作,在java中成为共享设计,这种设计思路就是,在java中形成一个对象池,在这个对象池中保存多个对象,新实例化一个对象,如果在对象池中已经开辟了空间,则不再新开辟,而是直接取出使用,String类就是采用这样的设计
看看下面的代码:
public void test2(){
String s=new String("abc");
String f=new String("abc");
System.out.println("是否相等"+(s.equals(f)));
System.out.println("是否相等"+(s==f));
}
结果:
是否相等true
是否相等false
(3)字符串类容的不可改变性
其实理解这个看下代码就很容易理解了
public void test3(){
String a="abc";
String b="abc";
a=a+b;
System.out.println(a);
}
结果:
abcabc
看到结果你是不是想说,这不是改变了吗,但是你想想一个字符串就是一个匿名对象,输出的a是abcabc,那说明在堆中就有一个abcabc的索引(或者就是有这个的空间,而刚开始创建的a="abc",并没有改变)
(4)String 类常用的方法
下面就是对这些常用方法使用的代码:
public void test4(){
//字符串和数组的互转
String s="hello";
char c[]=s.toCharArray();//将字符串变为字符数组
for(char i :c){
System.out.print(i+"\t");
}
System.out.println("");
String a=new String(c);//将全部的字符数组变为String
String st=new String(c,0,4);//将部分的字符数组变为字符串
System.out.println(a);
System.out.println(st);
}
结果:
h e l l o
hello
hell
public void test5(){
//取出指定位置的字符串
String s="abcde";
System.out.println(s.charAt(2));//取出第3个字符,这里是根据索引来取得,索引是从0开始
}
结果:
c
public void test6(){
//字符串与byte数组间的互相转换
String s="abcde";
byte a[]=s.getBytes();//将字符串变为byte数组
System.out.println(new String(a));//将byte数组转为字符串
System.out.println(new String(a,0,3));//将byte数组转为字符串
}
结果:
abcde
abc
补充:写个数组与byte的转换,是因为后期再IO流中经常会使用到
public void test7(){
String s="abcde";
System.out.println(s.length());//取一个字符串的长度
char a[]=s.toCharArray();
System.out.println(a.length);//取一个数组的长度
}
结果:
5
5
补充:看看取得数组的长度的方法和字符串长度的方法用说明不同?
字符串取长度的length()是有括号的
public void test8(){
String s="abcde";
System.out.println(s.indexOf("a"));//查找一个指定的字符串是否存在
System.out.println(s.indexOf("ac"));
}
结果:
0
-1
补充:如果存在就返回索引值,不存在就返回-1
public void test9(){
String s=" abcde ";
System.out.println(s.trim());//去掉左右空格
String a="abc dd dd dd";
System.out.println(a.trim());
}
结果:
abcde
abc dd dd dd
补充:是去掉左右空格,不会去掉中间的空格
public void test10(){
String s="abcde";
System.out.println(s.substring(1));//字符串的截取,冲索引值为1的地方开始到末尾
System.out.println(s.substring(1, 3));//索引1开始,3结束
}
结果:
bcde
bc
public void test11(){
String s="ab cde";
String a[]=s.split(" ");//按指定的方式拆分,这里是按空格的方式(拆分必须是字符串正有的)
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
for(String b:a){
System.out.println(b);
}
}
结果:
ab
cde
ab
cde
public void test12(){
String s="abcde";
String a="ABCDE";
System.out.println(s.toUpperCase());//转大写
System.out.println(a.toLowerCase());//转小写
}
结果:
ABCDE
abcde
public void test13(){
String s="abcde";
System.out.println(s.startsWith("abc"));//判断是否已什么开头
System.out.println(s.endsWith("de"));//判断是否以什么结尾
}
结果:
true
true
public void test14(){
String s="abcde";
String a="ABCDE";
System.out.println(s.equalsIgnoreCase(a));//不区分大小写比较
}
结果:
true
public void test15(){
String s="aaade";
System.out.println(s.replaceAll("a", "m"));//替换
System.out.println(s.replace("a", "d"));
}
- java学习之路--java对象(1)--重点String类的常用方法
- Java学习笔记之String类的常用方法
- java中String对象的常用方法
- Java String对象常用的方法
- 18天Java学习---8.面向对象编程03-String类的重点应用
- java学习记录(一)String类的常用方法
- java基础之常用类—File类和String类(重点)
- Java面向对象基础--String类中常用的方法
- java中String类对象的常用操作及方法
- 12-6java面向对象之String类常用方法的总结
- java学习之路---线程(重点)
- JAVA学习第三十课(常用对象API)- String类:类方法练习
- java对象转为java String的几种常用方法
- JAVA对象转为Java String的几种常用方法
- JAVA对象转为Java String的几种常用方法
- Java常用类和方法重点总结
- JAVA之String常用方法
- Java学习笔记3 - String类的常用方法
- linux虚拟机中php.ini的详细配置
- 驱动之路三--------button驱动(input设备)
- 转吕建伟 我们的管理:部门管理
- cocos2d-x节点(CCTransitionPageTurn.h)API
- cocos2d-x节点(CCTransitionProgress.h)API
- java学习之路--java对象(1)--重点String类的常用方法
- 关闭MongoDB node
- gdb+gdbserver demo
- Linux系统调用
- 工作那些事(十九)公司的创业期、发展期和回报期
- 56,Qt(01)
- Intent与<intent-filter> 区别
- 驱动之路二----LED(MISC设备)
- Fedora启动优化