黑马程序员_eclipse的使用和常用API-2

 ------- android培训、java培训、期待与您交流! ----------

eclipse的使用和常用API-2

1.Scanner的概述和方法介绍

A:Scanner的概述   是一个简单的文本扫描器,可以使用正则表达式

B:Scanner的构造方法原理

Scanner(InputStream source)

System类下有一个静态的字段:

public static final InputStream in; 标准的输入流,对应着键盘录入。

C:一般方法

hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx,即hsNext(),next()或nextLine()   //此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 int 值,则返回 true。

public static void main (string [] args){

 scanner sc=new scanner();

 if(sc.hsNextInt()){        //判断输入类型是否为int

   int i=sc.nextInt();

   systen.out.println(i);

}else{

   system.out.println("输入类型有误");

 }   }

nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符


2.Scanner获取数据出现的小问题及解决方案

A:两个常用的方法:

public int nextInt():获取一个int类型的值

public String nextLine():获取一个String类型的值    //nextLine()返回一个string类型的数据

B:案例演示

a:先演示获取多个int值,多个String值的情况

b:再演示先获取int值,然后获取String值出现问题   //输入完第一个int值后,直接就开始打印了,不能输入第二个String值

 

c:问题解决方案

第一种:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。//浪费空间

第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。(后面讲)

         //建议用nextLine()方法获取键盘录入信息,因为是字符串类型,所以你键盘录入什么都可以,不会报错,然后需要什么类型的再转换成什么类型就好了.


3.String类的概述

A:String类的概述

通过JDK提供的API,查看String类的说明

可以看到这样的两句话。

a:字符串字面值"abc"也可以看成是一个字符串对象。

b:字符串是常量,一旦被赋值,就不能被改变。

//String str = "abc"   //abc相当于一个对象,将它的地址赋值给了str

 str="def"  //"def"也相当于一个对象,他将它的地址值赋值给了str,str原来指向的那个对象就变成了垃圾

 system.out.println(str);  //String类重写了toString返回返回的是该对象本身;  打印引用对象的时候会默认调用toString()方法即str.toString()


4.String类的构造方法

A:常见构造方法

public String():空构造

public String(byte[] bytes):把字节数组转成字符串

public String(byte[] bytes,int index,intlength):把字节数组的一部分转成字符串 (从index位置开始,向后转length个)

public String(char[] value):把字符数组转成字符串  //将字符穿成串转成字符串输出

public String(char[] value,int index,intcount):把字符数组的一部分转成字符串

public String(String original):把字符串常量("jfjhgjh")值转成字符串  (jfjhgjh)


byte[] arr1={97,98,99};

string s2=new string(arr1);

system.out.println(s2);   //输出abc

*//基本数据类型比较的是值,引用数据类型比较的是地址值,String是引用数据类型

 

5.String类的常见面试题

1.判断定义为String类型的s1和s2是否相等

String s1 = "abc";

String s2 = "abc";

System.out.println(s1 == s2);  //true,常量池中没有这个字符串对象,就创建一个,如果有直接将该该字符串对象的地址值赋值过去

System.out.println(s1.equals(s2));  //true, equals将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。


2.下面这句话在内存中创建了几个对象?

String s1 = new String("abc"); //创建两个对象,一个在常量池中,一个在堆内存中(copy的副本)


3.判断定义为String类型的s1和s2是否相等

String s1 = newString("abc");   //s1 记录的是堆内存中对象的地址值

String s2 = "abc";               //s2 记录的是常量池中对象的地址值

System.out.println(s1 == s2); ?    //false

System.out.println(s1.equals(s2)); ?  //true 因为它比较的是abc,不是地址值

4.判断定义为String类型的s1和s2是否相等

String s1 = "a" + "b" +"c";

String s2 = "abc";

System.out.println(s1 == s2); ?      //true,java中有常量优化机制,"a"  "b" "c" 本身都是字符串常量,在编译的时候它本身就是"abc"字符串,所以在常量池中就创建这么一个"abc"字符串常量,s2用abc,已存在便不用再创建

System.out.println(s1.equals(s2)); ?     //true

5.判断定义为String类型的s1和s2是否相等

String s1 = "ab";

String s2 = "abc";

String s3 = s1 + "c";

System.out.println(s3 == s2);   //false,     因为s1是变量,所以串联时底层会先创建一个stringBuffer对象,串成abc,再通过toString 方法转换成String类型,将地址给s3

System.out.println(s3.equals(s2)); ?  //true



6.String类的判断功能

A:String类的判断功能

boolean equals(Object obj):比较字符串的内容是否相同,区分大小写

//String s1 =" djd"

//String s2 =" djd"

//aystem.out.println(s1.equals(s2));  //true

boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写, 和上面一样,只是不区分大小写

boolean contains(String str):判断大字符串中是否包含小字符串

//String s1 ="我爱heima"

//String s2 ="heima"

//System.out.println(s3.contains(s2));  输出true

boolean startsWith(String str):判断字符串是否以某个指定的字符串开头

//System.out.println(s1.startsWith(s2));     //s1 我爱heima 是以 s2-heima 开始的吗

boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾

boolean isEmpty():判断字符串是否为空。 //空返回true,不空返回false

 

* "" 和null的区别:

 ""是字符串常量,同时也是一个String类的对象,既然是对象当然可以调用String类的方法

 null 是空常量,不能调用任何方法,否则会出现空指针异常,null常量可以给任意的引用数据类型赋值


7.模拟登录,给三次机会,并提示还有几次。用户名和密码都是admin



8.String类的获取功能

A:String类的获取功能

int length():获取字符串的长度。即字符的个数

 //String s2 ="heima"

//System.out.println(s2.length());   输出 5  ,河马 输出 2

char charAt(int index):获取指定索引位置的字符,  从0开始数

int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。参数可以是int(相应字母或数字的ASCII码值),也可以是字符类型即'a'  //如果不存在返回 -1

int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。     //返回字符串中第一个字符出现的位置,字符串必须是连着的,否则返回 -1

int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。 //从指定位置向后找

int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。

lastIndexOf                   //从后向前找

String substring(int start):从指定位置开始截取字符串,默认到末尾。

 string s1="heimawudi";

 string s2=s1.subString(5);  //从索引为5 的地方截取到最后

 System.out.println(s2);    //输出wudi

 

String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。 //截取的字符串不包括end位置的字符, 左闭右开


9.案例演示,需求:遍历字符串



10.案例演示,,需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数。如:ABCDEabcd123456!@#$%^



11.String类的转换功能

A:String的转换功能:

byte[] getBytes():通过gbk码表把字符串转换为字节数组。

char[] toCharArray():把字符串转换为字符数组//遍历数组的另一种方式,将字符一个一个输出


static String valueOf(char[] chs):可以把任意类字符数组转成字符串。

static String valueOf(int i):把int类型的数据转成字符串。

注意:String类的valueOf方法可以把任意类型的数据转成字符串。

String toLowerCase():把字符串转成小写。(了解)

String toUpperCase():把字符串转成大写。

String concat(String str):把字符串拼接。//s3.concat(s4),  也可以用 + 拼接


12.按要求转换字符(链式编程)

A:案例演示,需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)



13_常见对象(把数组转成字符串)

A:案例演示.需求:把数组中的数据按照指定个格式拼接成一个字符串

举例:int[] arr = {1,2,3};     输出结果: "[1,2, 3]"


14_常见对象(String类的其他功能)

A:String的替换功能及案例演示

String replace(char old,char new)

String replace(String old,String new)

B:String的去除字符串两端空格及案例演示

String trim()

C:String的按字典顺序比较两个字符串及案例演示

int compareTo(String str)(暂时不用掌握)       //返回int数

int compareToIgnoreCase(String str)(了解)   //不区分大小写



15.案例演示,需求:把字符串反转

举例:键盘录入"abc"     输出结果:"cba"




16.案例演示,统计大串中小串出现的次数


你可能感兴趣的:(java,编程,计算机,黑马程序员)