黑马程序员--Java编程之常见对象

本文详细介绍了Java中Scanner类的基本用法及其常见问题解决方法,并深入探讨了String类的特点、构造方法、判断功能、获取功能、转换功能及其他实用功能。

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

一 常见对象-Scanner

1 概述和构造方法

1.1 Scanner的概述

JDK5以后获取用户的键盘录入

1.2 Scanner的构造方法原理

Scanner(InputStream source)
System类下有一个静态的字段:
public static final InputStream in; 标准的输入流,对应着键盘录入。

2 hasNextXxx()和nextXxx()方法

基本格式
hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符

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

3.1 两个常用的方法:

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

3.2 出现的问题

用nextLine()获取数据时,先获取int再获取String时候出问题了,回车当做字符串了

3.3 问题解决方案

第一种:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。

二 常见对象-String类

1 String类概述

1.1 什么是字符串

多个字符表示的一串数据,也可以看成是一个字符数组

1.2 概述

String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
a:字符串字面值”abc”也可以看成是一个字符串对象。
b:字符串是常量,一旦被赋值,就不能被改变。

2 String类的构造方法

常见构造方法:
public String():空构造
public String(byte[] bytes):把字节数组转成字符串
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串常量值转成字符串

3 String类的特点

3.1 String的特点:一旦被赋值就不能改变

3.2 案例演示

String s = “hello”; s += “world”; 问s的结果是多少?
这句话都干了些什么事呢?
首先在栈内存中为s开辟一块空间,然后拿”hello”这个字符串常量去常量池中找,看看有没有这个常量,如果有就将这个常量在常量池中的地址返回给s,如果没有就在常量池中创建一个,并将该地址值返回
所以s的结果为:helloworld
那么一旦被赋值就不能改变是什么意思呢?指的是常量池中的字符串一旦被赋值就不能改变,但s指向的地址值是可以改变的

4 常见面试题

4.1 面试题1

题目:String s = new String(“hello”)和String s = “hello”的区别?
解析:String s = new String(“hello”);创建了两个对象
String s = “hello”;创建了一个对象

4.2 面试题2

题目:==和equals()的区别?
解析:因为String是引用数据类型,所以比较的是地址值
equals不重写的时候默认比较的是两个对象的地址值,但是String类对该方法进行了重写,重写后该方法比较的是两个字符串的内容

4.3 面试题3

看程序写结果

String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);//false
System.out.println(s1.equals(s2));//true

String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3 == s4);//false
System.out.println(s3.equals(s4));  //true

String s5 = "hello";
String s6 = "hello";
System.out.println(s5 == s6);//true
System.out.println(s5.equals(s6));//true

4.4 面试题4

看程序写结果

String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3 == s1 + s2);//false
System.out.println(s3.equals(s1 + s2));//true

5 String类的判断功能

boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean contains(String str):判断大字符串中是否包含小字符串
boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
boolean isEmpty():判断字符串是否为空。

6 String类的获取功能

6.1 方法:

int length():获取字符串的长度。
char charAt(int index):获取指定索引位置的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
String substring(int start):从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。

6.2 练习题:

题目要求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
代码实现:

public class Demo {
    public static void main(String[] args) {
        //定义一个字符串
        String str = "hwqey1289SHDIO98euwJIOU398EWISJoiur9ijU390";
        //定义变量,存储指定字符出现的次数
        int num1 = 0;
        int num2 = 0;
        int num3 = 0;
        //遍历字符串
        for(int i = 0 ; i < str.length() ; i++){
            char c = str.charAt(i);
            if(c >= 'a' && c <= 'z'){
                num1++;
            }
            if(c >= 'A' && c <= 'Z'){
                num2++;
            }
            if(c >= '0' && c <= '9'){
                num3++;
            }
        }
        System.out.println("小写字母次数:" + num1 + ",大写字母次数:" 
        + num2 + ",数字次数:" + num3);
    }
}

7 String类的转换功能

byte[] getBytes():把字符串转换为字节数组。
char[] toCharArray():把字符串转换为字符数组。
static String valueOf(char[] chs):把字符数组转成字符串。
static String valueOf(int i):把int类型的数据转成字符串。
String toLowerCase():把字符串转成小写。
String toUpperCase():把字符串转成大写。
String concat(String sr):把字符串拼接。

8 String类的其他功能

8.1 String的替换功能

String replace(char old,char new)
String replace(String old,String new)

8.2 String的去除字符串两端空格功能

String trim()

8.3 String的按字典顺序比较两个字符串功能

int compareTo(String str)
int compareToIgnoreCase(String str)

9 练习题

9.1 字符串反转

题目要求:把字符串反转
举例:键盘录入”abc”
输出结果:”cba”
代码实现:

public class StringTest {
   public static void main(String[] args) {
        //定义一个原始字符串
       String s = "abcdefg";
       System.out.println(s+"反转后:"+reverse(s));
   }
   /*
    * 字符串反转方法
    * 两个明确
    *    返回值类型:String
    *    参数:String
    */
   public static String reverse(String s){
       String ss ="";
       //先把传进来的字符串转换成 字符数组
       char[] chs = s.toCharArray();
       //逆序遍历
       for(int i =chs.length-1;i>=0;i--){
           ss += chs[i];
       }
       return ss;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值