zoukankan      html  css  js  c++  java
  • Java Character & String & Scanner类

    • Character类

    Character 类用于对单个字符进行操作。

    Character 类在对象中包装一个基本类型 char 的值

    char用法:

    char ch = 'a';
     
    // Unicode 字符表示形式
    char uniChar = 'u039A'; 
     
    // 字符数组
    char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };

     使用Character的构造方法创建一个Character类对象:

    Character ch = new Character('a');

    在某些情况下,Java编译器会自动创建一个Character对象。

    例如,将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。

    // 原始字符 'a' 装箱到 Character 对象 ch 中
    Character ch = 'a';
     
    // 原始字符 'x' 用 test 方法装箱
    // 返回拆箱的值到 'c'
    char c = test('x');
    •  Character类常用的方法:
    1. isLetter() 是否是一个字母
    2. isDigit()是否是一个数字
    3. isWhitespace()是否是一个空格
    4. isUpperCase()是否是大写字母
    5. isLowerCase()是否是小写字母
    6. toUpperCase()指定字母的大写形式
    7. toLowerCase()指定字母的小写形式
    8. toString()返回字符的字符串形式,字符串的长度仅为1
    • String类

    String类的常见构造方法:

    String(String original)
    //创建一个 String 对象为 original 的拷贝。
    String(char[] value)
    //用一个字符数组创建一个 String 对象
    String(char[] value, int offset, int count)
    //用一个字符数组从 offset 项开始的count 个字符序列创建一个 String 对象。

     实例:

    public class test{
        public static void main(String[] args){
            String s1 = "hello";
            String s2 = "world";
            String s3 = "hello";
            System.out.println(s1 == s3); //true
            
            s1 = new String("hello");
            s2 = new String("hello");
            System.out.println(s1 == s2); //false
            System.out.println(s1.equals(s2)); //true
            char c[] = {'s', 'u', 'n', ' ', 'j', 'a', 'v', 'a'};
            String s4 = new String(c);
            String s5 = new String(c,4,4);
            System.out.println(s4); // sun java
            System.out.println(s5); //java
        }
    }
    •  String 类常用方法

    注意:

    String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。

    如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类

    获取字符串长度:

    String类提供了.length()方法。

    连接字符串:

    1.

    string1.concat(string2);
    例:
    "我的名字是 ".concat("Jeffrey");

    2.

    //使用'+'操作符来连接字符串
    "Hello," + " runoob" + "!"
    
    //运行结果:
    "Hello, runoob!"
    • 创建格式化字符串

    输出格式化数字可以使用 printf() 和 format() 方法。

    String 类使用静态方法 format() 返回一个String 对象。

    String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。

    System.out.printf("浮点型变量的的值为 " +
                      "%f, 整型变量的值为 " +
                      " %d, 字符串变量的值为 " +
                      "is %s", floatVar, intVar, stringVar);
    String fs;
    fs = String.format("浮点型变量的的值为 " +
                       "%f, 整型变量的值为 " +
                       " %d, 字符串变量的值为 " +
                       " %s", floatVar, intVar, stringVar);

     String方法

     Java String API

    • Java StringBuffer & StringBuilder 类

    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

    和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

    StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

    由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    示例:

    public class Test{
      public static void main(String args[]){
        StringBuffer sBuffer = new StringBuffer("Jeffrey's 博客园:");
        sBuffer.append("www");
        sBuffer.append(".666");
        sBuffer.append(".com");
        System.out.println(sBuffer);  
      }

    //输出
    Jeffrey's 博客园:www.666.com

    StringBuffer 类支持的主要方法:

    1. public StringBuffer append(String s)
      将指定的字符串追加到此字符序列。
    2. public StringBuffer reverse()
       将此字符序列用其反转形式取代。
    3. public delete(int start, int end)
      移除此序列的子字符串中的字符。
    4. public insert(int offset, int i)
      将 int 参数的字符串表示形式插入此序列中。
    5. replace(int start, int end, String str)
      使用给定 String 中的字符替换此序列的子字符串中的字符。
    • Scanner类

    java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。

    创建Scanner对象的基本语法:

    Scanner s = new Scanner(System.in)

    通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

    import java.util.*;
    
    public class test {
        public static void main(String[] args)  
        {  
            Scanner scan1 = new Scanner(System.in);
            System.out.println("next方式接收:");
            if(scan1.hasNext()){
                String str1 = scan1.next();
                System.out.println("输入的数据为:" + str1);
            }
            
            Scanner scan2 = new Scanner(System.in);
            System.out.println("nextLine方式接收:");
            if(scan2.hasNextLine()){
                String str2 = scan2.nextLine();
                System.out.println("输入的数据为:" + str2);
            }
        }
    }

    输出:

    next方式接收:
    one two three
    输入的数据为:one
    nextLine方式接收:
    one two three
    输入的数据为:one two three
    • next()与nextLine()区别

    next():

    • 1、一定要读取到有效字符后才可以结束输入。
    • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
    • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。 
    • next() 不能得到带有空格的字符串。

    nextLine(): 

    • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。 
    • 2、可以获得空白。

    Java SE5的 Scanner 类的构造器接受的就是一个 Readable 接口。

    Readable 没有用作 Java标准库中其他任何方法的参数,它是单独为 Scanner 创建的,以使得 Scanner 不必将其参数限制为某个特定的类。通过这种方式,Scanner类可以作用于更多的类型。

    如果你创建了一个新的类,并且想让 Scanner 可以作用于它,可以应用接口Reanable。

    示例:

    import java.nio.*;
    import java.util.*;
    public class RandomWords implements Readable{
        private static Random rand = new Random(47);
        //toCharArray() 将字符串对象中的字符转换为一个字符数组
        private static final char[] capitals = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
        private static final char[] lowers = "abdefghijklmnopqrstuvwsyz".toCharArray();
        private static final char[] vowels = "aeiou".toCharArray();
        private int count;
        public RandomWords(int count) {this.count = count;}
        public int read(CharBuffer cb){
            if(count-- == 0)
                return -1;
            cb.append(capitals[rand.nextInt(capitals.length)]);
            //给定一个参数n,nextInt(n)将返回一个大于等于0小于n的随机数
            for (int i=0; i<4; i++){
                cb.append(vowels[rand.nextInt(vowels.length)]);
                cb.append(lowers[rand.nextInt(lowers.length)]);
            }
            cb.append(" ");
            return 10;
        }
        public static void main(String args[]){
            Scanner s = new Scanner(new RandomWords(10));
            while(s.hasNext()) //每当s.hasNext()的时候,readable.read()就会被调用
                System.out.println(s.next());
        }
    }

    输出:

    Yatemutas
    Foeepueom
    Goramifoh
    Rasufabiw
    Nuuaeeoir
    Hasebituv
    Ruririiud
    Nusayeziq
    Kudujoeow
    Wakijejoe
  • 相关阅读:
    博客收藏
    日常开发工具收藏
    2016工作总结
    REST设计规则
    spring boot 学习笔记(二) 构建web支持jsp
    数据库事务中的隔离级别和锁+spring Transactional注解
    springboot学习笔记(一)
    Python爬虫实例(四)网站模拟登陆
    Python爬虫实例(三)代理的使用
    Python爬虫实例(二)使用selenium抓取斗鱼直播平台数据
  • 原文地址:https://www.cnblogs.com/dear_diary/p/6517896.html
Copyright © 2011-2022 走看看