黑马程序员——java-几个常用的类(Object,Scanner,String,StringBuffer/StringBuilder)
2015-04-26 15:27
776 查看
4000
———–android培训、java培训、java学习型技术博客、期待与您交流!————
1 Object类
2 Scanner类的用法
3 String类
4
StringBuffer/StringBuilder
———–android培训、java培训、java学习型技术博客、期待与您交流!————
———–android培训、java培训、java学习型技术博客、期待与您交流!————
1 Object类
Object类层次结构的根类,所有的类都直接或间接的继承自该类
Object类中常用的方法 public String toString()---//返回该对象的字符串表示 public final Class getClass()---返回的是字节码对象//反射时候用到 public boolean equals(Object obj)--指示其他某个对象是否与此对象“相等”。 protected void finalize()-----当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法 public int hashCode()----返回地址值
重要的方法: ---public String toString() 返回对象的字符串表达形式--getClass().getName() + '@' + Integer.toHexString(hashCode()) 一般输出对象(s)的引用的时候,默认输出的都是该引用调用的toString()方法 (s.toString() ) 一般都重写此方法。重写的时候,不用自己添加,快捷键Alt+Shift+s,然后点击toString()即可。
package importMethod; class Persion// 定义一个Persion类 { public String name; public int age; public Persion(String name, int age)// 带参数的构造方法 { this.name = name; this.age = age; } @Override public String toString()//重写Object类的该方法 { return "Persion [name=" + name + ", age=" + age + "]"; } } public class ObjectDemo { public static void main(String[] args) { Persion persion = new Persion("袁郎", 25);// 创建Persion对象 //System.out.println(persion);// 打印Persion对象(看结果) // 输出的结果是:importMethod.Persion@56bf1a4a(说明给Persion类没有重写toString()方法) System.out.println(persion);// 打印Persion对象(看结果) //输出结果为:Persion [name=袁郎, age=25](因为Persion类重写了toString()方法) } }
---public boolean equals(Object obj) ==的作用 --比较基本类型,比较的是基本类型的值是否相同 --比较引用类型,比较的是引用类型的地址值是否相同 默认情况下Object的equals方法比较的是对象的地址值是否相同 所以如果要比较对象的值是否相同,需要重写equals方法,也不用手动添加,有快捷键 ---对象 instanceof 类名(判断,该对象是否是该类的一个对象)
2 Scanner类的用法
用法:用于接受用户键入的数据 构造方法:--public Scanner(InputStream source) Scanner in =new Scanner(System.in); 解释这个构造方法中的参数问题: System类中有一个成员变量in,是静态修饰的:如下 public static final InputStream in; 所以:System.in调用后返回的是一个InputStream 字节输入流的对象(详情看IO流那一节) Scanner类中的重要方法:
--public byte nextByte()//接受字节 --public int nextInt()//接受int类型 --public long nextLong()//接受long类型 --public float nextFloat()//接受float类型 --public double nextDouble()//接受double类型 --public short nextShort()//接受short类型 --public String nextLine()//接受String类型
package importMethod; import java.util.Scanner; public class ScannerDemo { private void mian() { Scanner in =new Scanner(System.in);//定义一个扫面器对象 System.out.println("请输入一个整数"); int a=in.nextInt();//接受数据 System.out.println("输入的数是:"+a);//输出数据 } }
小问题----连续的先接受一个int在接受一个String时候在输入一个int值后,int值默认后边还有\n,此时 会\n当做String赋值 int i=sc.nextInt();String s=sc.nextLine(); 解决方法; ---A在int值接受结束后再,重新定义一个Scanner 对象用于接受String
package importMethod; import java.util.Scanner; public class Scannerproblem { public static void main(String[] args) { Scanner s=new Scanner(System.in); int a=s.nextInt(); Scanner i=new Scanner(System.in);//接受一个int类型的数据后,重新定义扫描器 String string=i.nextLine();//在接受一个String类型的数据 System.out.println(a); System.out.println(string); } }
---B 把所有的数据都用字符串接受,然后要什么类型就转成什么类型(用到String类)
package importMethod; import java.util.Scanner; public class Scannerproblem { public static void main(String[] args) { Scanner i =new Scanner(System.in); String s=i.nextLine(); //在接受一个String类型的数据,把所有数据都用String接受 //在输出的时候,需要什么类型,就转成什么类型 System.out.println(s.valueOf(s)); } }
3 String类
构造方法: A--String() B--String(byte[] bytes) 把字节数组转成字符串 C--String(byte[] bytes, int index, int length)把字节数组的一部分转成字符串 D--String(char[] value) 把字符数组转成字符串 E--String(char[] value, int indexint count) 把字符数组的一部分转成字符串 F--String(String original) 把字符串转成字符串
package com.itheima;
/*
* 构造方法: A--String() B--String(byte[] bytes) 把字节数组转成字符串 C--String(byte[] bytes, int index, int length)把字节数组的一部分转成字符串 D--String(char[] value) 把字符数组转成字符串 E--String(char[] value, int indexint count) 把字符数组的一部分转成字符串 F--String(String original) 把字符串转成字符串
*/
public class string_Demo {
public static void main(String[] args) {
// A--String()
String s = new String();
System.out.println("s 对象的长度为:" + s.length());
// String(char[] value) 把字符数组转成字符串
char[] ch = new char[] { 'e', 'd', 'c', 'b', 'a' };
String bs = new String(ch);// 把字符数组转成字符串
String bs1 = new String(ch, 0, 2);// 把字符数组的一部分转成字符串
System.out.println(bs);
// String(String original) 把字符串转成字符串
System.out.println(new String(new String("赵云!")));// 把字符串转成字符串
}
}
字符串的特点:一但被赋值,它的值就不能被改变(但是字符对象的引用所指向的地址是可以改变的) 字符串的本质就是一个字符数组(数组的特点,长度是固定的) 例子: String s="hello"; s+="world"; System.out.println(s);//输出的值是:helloworld
面试题1 String s=new String("hello")和String s1="hello"的区别? s==s1(false)比较的是地址 s.equals(s1)(true)比较的是内容 画内存图可以解释 ![这里写图片描述](https://img-blog.csdn.net/20150428103348930)
面试题2 String s1="hello" String s2="world" String s3="helloworld" s3.equals(s1+s2)//true s3==s1+s2//false 字符变量相加,先开空间在相加存储 s3=="hello"+"world"//true 字符常量相加,先相加,再在常量池中找如果有,就返回常量池的地址,否则在开空间,返回地址
String的方法(判断方法) A--public boolean equals(Object anObject) 比较字符串的内容是否相同,区分大小写 B--public boolean equalsIgnoreCase(String anotherString) 按字典顺序比较两个字符串,不考虑大小写 C--public boolean contains(CharSequence s) 判断字符串中是否包含指定的字符 D--public boolean endsWith(String suffix) 判断是否是以指定的字符结尾 E--public boolean startsWith(String prefix,int toffset) 判断是否是以指定的字符开头
F--public boolean isEmpty() 判断字符串是否为空 String s="" s.idEmpty()//结果为true String s="null" s.idEmpty()//这样写要报错,空对象,就是没有对象,没有对象就不能调用方法
package com.itheima; /*String 的判断方法: * A--public boolean equals(Object anObject) 比较字符串的内容是否相同,区分大小写 B--public boolean equalsIgnoreCase(String anotherString) 按字典顺序比较两个字符串,不考虑大小写 C--public boolean contains(CharSequence s) 判断字符串中是否包含指定的字符 D--public boolean endsWith(String suffix) 判断是否是以指定的字符结尾 E--public boolean startsWith(String prefix,int toffset) 判断是否是以指定的字符开头 F--public boolean isEmpty() 判断字符串是否为空 */ public class string2 { public static void main(String[] args) { String s1 = "Hello"; String s2 = "hello"; System.out.println(s1.equals(s2));// 结果为false,次方法比较大小写 System.out.println(s1.equalsIgnoreCase(s2));// 结果为true。次方法不区分大小写 System.out.println(s1.contains("ello"));//结果为true ,包含指定的字符 System.out.println(s1.startsWith("He"));//结果为true,以指定的字符开头 System.out.println(s1.endsWith("lo"));//结果为true,以指定的字符结尾 System.out.println(s1.isEmpty());//结果为false,字符串为空 } }
String的方法(获取功能) A--public int length()//返回字符串的长度 B--public char charAt(int index)//返回指定索引处的字符 C--public int indexOf(int ch)//返回指定字符在字符串中第一次出现的索引 D--public int indexOf(int ch,int fromIndex) //获取ch这个字符在该字符串中的指定索引后第一次出现的索引 E--public int indexOf(String str,int fromIndex) //获取str字符串在该字符串中从指定索引后第一次出现的索引 F--public int indexOf(String str)//获取指定字符串在字符串中第一次出现的索引 G--public String substring(int beginIndex) //获取字串,从指定索引到结尾 H--public String substring(int beginIndex,int endIndex) //获取字 e1bb 串,从beginIndex到endIndex(牢记,获取的字串包括左边,不包括右边)
package com.itheima; /* * A--public int length()//返回字符串的长度 B--public char charAt(int index)//返回指定索引处的字符 C--public int indexOf(int ch)//返回指定字符在字符串中第一次出现的索引 D--public int indexOf(int ch,int fromIndex) //获取ch这个字符在该字符串中的指定索引后第一次出现的索引 E--public int indexOf(String str,int fromIndex) //获取str字符串在该字符串中从指定索引后第一次出现的索引 F--public int indexOf(String str)//获取指定字符串在字符串中第一次出现的索引 G--public String substring(int beginIndex) //获取字串,从指定索引到结尾 H--public String substring(int beginIndex,int endIndex) //获取字串,从beginIndex到endIndex(牢记,获取的字串包括左边,不包括右边) */ public class String3 { public static void main(String[] args) { String s = "heallo,java"; System.out.println(s.length());// 返回字符串的长度 System.out.println("s字符串中,下标为2处的字符为:" + s.charAt(1));// 获取:下标为2处的字符 System.out.println(s.indexOf("jav"));// 返回指定字符在字符串中第一次出现的索引 System.out.println(s.indexOf("a", 3));// 获取ch这个字符在该字符串中的指定索引后第一次出现的索引 System.out.println(s.substring(2));// 结果为:allo,java--获取字串,从指定索引到结尾 System.out.println(s.substring(0, 3));// 结果为:hea---(牢记,获取的字串包括左边,不包括右边 } }
String的遍历 通过A--public int length()方法和B--public char charAt(int index)方法可以遍历String
package com.itheima; public class string4 { public static void main(String[] args) { String s="androd,java"; //字符串的遍历:两个方法的结合 /* * 通过A--public int length()方法 * B--public char charAt(int index)方法可以遍历String */ for (int i = 0; i < s.length(); i++) { System.out.println(s.charAt(i)); } } }
String的方法(转换功能) byte[] getByteds()把字符串转成字节数组 char[] toCharArray()把字符串转成字符数组 static String copyValueOf(char[] chs)把字符数组转成字符串 static String valueOf(char[] chs)把字符数组转成字符串 static String valueOf(int i)基本类型,把基本类型转成字符串 String toLowerCase()把字符串转成小写 String toUpperCase()把字符串转成大写 String concat(String str)字符串拼接
package importMethod; public class StringDemo { public static void main(String[] args) { /* * String的方法(转换功能) * * byte[] getByteds()把字符串转成字节数组 char[] toCharArray()把字符串转成字符数组 * * static String copyValueOf(char[] chs)把字符数组转成字符串 static String * valueOf(char[] chs)把字符数组转成字符串 static String valueOf(int * i)基本类型,把基本类型转成字符串 * * String toLowerCase()把字符串转成小写 String toUpperCase()把字符串转成大写 String * concat(String str)字符串拼接 */ String s = "java-android"; byte[] bys = s.getBytes();// 把字符串转成字节数组 System.out.println("此数组bys的长度是:" + bys.length); char[] ch = s.toCharArray();// 把字符串转成字符数组 System.out.println("此数组ch的长度是:" + ch.length); char[] ch1 = new char[] { 'a', 'n', 'd', 'r', 'o', 'i', 'd' }; System.out.println(String.valueOf(ch1));// 把字符数组转成字符串 System.out.println(String.copyValueOf(ch1));// 把字符数组转成字符串 int a = 100; System.out.println(String.valueOf(a));// 基本类型,把基本类型转成字符串 String string = "java AND android"; System.out.println(string.toUpperCase());// 把字符串转成大写---JAVA AND ANDROID System.out.println(string.toLowerCase());// 把字符串转成小写---java and android String s1 = "hello", s2 = "java"; System.out.println(s1.concat(s2));// 字符串拼接-----hellojava } }
copyValueOf(char[] chs)和 valueOf()的区别? --copyValueOf(char[] chs)只把字符数组转成string -- valueOf()可以把任意类型转成String
String的方法(替换功能) A--public String replace(char oldChar,char newChar) 把字符串中所有oldChar的字符替换为newChar B--public String replace(String oldChar,String newChar) String trim()该方法是,去除字符串两端的空格
package importMethod; /* * A--public String replace(char oldChar,char newChar) 把字符串中所有oldChar的字符替换为newChar B--public String replace(String oldChar,String newChar) c--public String replace(CharSequence target,CharSequence replacement) target - 要被替换的 char 值序列 replacement - char 值的替换序列 c---String trim()该方法是,去除字符串两端的空格 */ public class string_tihuan { public static void main(String[] args) { String olds=" java_an droid "; String news="hello"; System.out.println(olds.replace(olds, news));//结果----hello System.out.println(olds.replace(news, olds));//结果--- java_an droid System.out.println(news.replace("l", "mm"));//结果----hemmmmo System.out.println(olds.trim());//结果为----java_an droid只能去除两端的空格 } }
4
StringBuffer/StringBuilder
(1)字符串缓冲区类。 (2)String,StringBuffer/StringBuilder的区别? A:String的字符串长度固定。而StringBuffer/StringBuilder的字符串长度是可以改变的。 B:StringBuffer是线程安全的,效率低。 StringBuilder是线程不安全的,效率高。 (3)构造方法: A:StringBuffer sb = new StringBuffer();//没有参数的构造方法,其初始容量为16 B:StringBuffer sb = new StringBuffer(50);//带参数的,初始容量为指定的值 C:StringBuffer sb = new StringBuffer("hello");//初始容量为String.length()+16 (4)成员方法: public int capacity()//获得理论值 public int length()//获得字符串中的实际长度 A:添加功能 append StringBuffer操作后,如果返回的是StringBuffer类型,实质返回的是本身对象 StringBuffer sb=new StringBuffer(); StringBuffer s1=sb.append("hello"); StringBuffer s2=sb.apped("world"); s1==s2//true 返回的是true,说明s1和s2同一个对象 所以,可以改为,sb.append("hello").append("world");链式操作 public StringBuffer insert(int offset,char c) 在指定位置上插入字符,以前位置上的字符先后移动 B:删除功能 public StringBuffer delete(int start,int end) 删除从start到end的字符 public StringBuffer deleteCharAt(int index) 删除指定位置的字符 C:替换功能 public StringBuffer replace(int start,int end,String str) 把从[start,end)包左不包右的字符全部替换为str D:截取功能 public String substring(int start) public CharSequence subSequence(int start,int end)包左不包右 E:反转功能 public StringBuffer reverse()//"你爱我"----->“我爱你”
package importMethod; /* * public int capacity()//获得理论值 public int length()//获得字符串中的实际长度 A:添加功能 append StringBuffer操作后,如果返回的是StringBuffer类型,实质返回的是本身对象 StringBuffer sb=new StringBuffer(); StringBuffer s1=sb.append("hello"); StringBuffer s2=sb.apped("world"); s1==s2//true 返回的是true,说明s1和s2同一个对象 所以,可以改为,sb.append("hello").append("world");链式操作 public StringBuffer insert(int offset,char c) 在指定位置上插入字符,以前位置上的字符先后移动 B:删除功能 public StringBuffer delete(int start,int end) 删除从start到end的字符(包左不包右) public StringBuffer deleteCharAt(int index) 删除指定位置的字符 C:替换功能 public StringBuffer replace(int start,int end,String str) 把从[start,end)包左不包右的字符全部替换为str D:截取功能 public String substring(int start) public CharSequence subSequence(int start,int end)包左不包右 E:反转功能 public StringBuffer reverse()//"你爱我"----->“我爱你” */ public class stringBufferDemo { public static void main(String[] args) { StringBuffer sb = new StringBuffer("android_i am coming!"); System.out.println("字符串的实际长度为:" + sb.length() + " |加上16就是总容量: " + sb.capacity()); // 结果为:字符串的实际长度为:20 |加上16就是总容量: 36 StringBuffer sb1 = new StringBuffer();// 添加功能 sb1.append("android").append(" ").append("hello"); System.out.println(sb1);// 结果为:android hello // 在指定位置上插入字符,以前位置上的字符先后移动 System.out.println(sb1.insert(2, 'M'));// 结果为:anMdroid hello // 删除指定位置的字符 System.out.println(sb1.deleteCharAt(0));// 结果为:nMdroid hello // 在指定位置上插入字符,以前位置上的字符先后移动 System.out.println(sb1.delete(0, 2));// 结果为:droid hello--注意:(包左不包右) // 替换功能 System.out.println(sb1.replace(0, 2, "MH"));// 结果为:MHoid // hello--注意:(包左不包右) // 截取功能 System.out.println(sb1.substring(4));// 结果为:d hello System.out.println("没有截取之前sb1为:" + sb1 + "截取之后为:" + sb1.substring(0, 4));// 结果为:MHoi // 反转功能 System.out.println("没有翻转之前sb1为:" + sb1 + "翻转之后为:" + sb1.reverse()); // 结果为:没有翻转之前sb1为:MHoid hello翻转之后为:olleh dioHM } }
String和StringBuffer的相互转化:
String------->StringBuffer String s="hello"; 方式一: StringBuffer的构造方法 StringBuffer sb=new StringBuffer(s); 方式二: StringBuffer的append()方法 StringBuffer sb=new StringBuffer(); sd.append(s);//public StringBuffer append(String str) StringBuffer------->string StringBuffer sb=new StringBuffer(“hehe”); 方式一:String的构造方法 String s=new String(sb); 方式二:StringBuffer的toString()方法 String s=sb.toString();////public String toString()
———–android培训、java培训、java学习型技术博客、期待与您交流!————
相关文章推荐
- 黑马程序员——常用API详解之Object、Scanner、String
- JAVA基础--IDE&Object类、常用API-String类、常用API-Arrays、System、StringBuffer&Integer类和Date类、对象数组
- 黑马程序员_毕向东Java基础_集合(1)String&StringBuffer&StringBuilder&基本数据类型包装类
- 黑马程序员_JAVA常用的类API(Scanner,String)
- 黑马程序员——常用API——Object,Scanner,String
- 黑马程序员 java 基础 毕向东 面向对象 String StringBuffer StringBuilder 基本数据类型包装类
- 黑马程序员—Java基础学习笔记之String&&StringBuffer&&StringBuilder
- 黑马程序员_Java学习日记_JAVA中API中对象String和StringBuffer/StringBuilder
- 黑马程序员---易错、易望、基础、重要知识点 ——API常用类1——StringBuffer/StringBuilder
- Java——String和StringBuffer/StringBuilder字符串的常用方法
- 黑马程序员--java中String创建几个对象
- Java编程-String StringBuffer StringBuilder三者比较
- java stringbuffer stringbuilder
- 黑马程序员 知识点总结-Java中几个常用的类(二)
- java学习笔记StringBuffer/StringBuilder及基本数据类型
- 黑马程序员-Java中的几个常用类(补充)
- java 面试专题(二)String StringBuffer StringBuilder的区别
- 常用API——Object,Scanner,String
- Java源码分析--StringBuffer/StringBuilder
- java.lang.StringBuilder/java.lang.StringBuffer