零基础学Java(Day6)

这篇博客记录了Java学习的第六天内容,主要涉及Character类的常见方法和转义,以及String的创建、特点、格式化和长度计算。还提出了一个编程练习,要求从控制台读取字符串,筛选出大写字母和数字。此外,讨论了String的final和immutable特性,并给出字符串数组的初始化和排序挑战。
摘要由CSDN通过智能技术生成

学习Java记录(第六天)

Character

常见方法

public class Main {
    public static void main(String[] args) {
        System.out.println(Character.isLetter('a'));//判断是否为字母
        System.out.println(Character.isDigit('a')); //判断是否为数字
        System.out.println(Character.isWhitespace(' ')); //是否是空白
        System.out.println(Character.isUpperCase('a')); //是否是大写
        System.out.println(Character.isLowerCase('a')); //是否是小写

        System.out.println(Character.toUpperCase('a')); //转换为大写
        System.out.println(Character.toLowerCase('A')); //转换为小写
        
        String a2 = Character.toString('a'); //转换为字符串
    }
}

常见转义

    public static void main(String[] args) {
        System.out.println("使用空格无法达到对齐的效果");
        System.out.println("abc def");
        System.out.println("ab def");
        System.out.println("a def");

        System.out.println("使用\\t制表符可以达到对齐的效果");
        System.out.println("abc\tdef");
        System.out.println("ab\tdef");
        System.out.println("a\tdef");

        System.out.println("一个\\t制表符长度是8");
        System.out.println("12345678def");

        System.out.println("换行符 \\n");
        System.out.println("abc\ndef");

        System.out.println("单引号 \\'");
        System.out.println("abc\'def");
        System.out.println("双引号 \\\"");
        System.out.println("abc\"def");
        System.out.println("反斜杠本身 \\");
        System.out.println("abc\\def");
    }

输出

使用空格无法达到对齐的效果
abc def
ab def
a def
使用\t制表符可以达到对齐的效果
abc	def
ab	def
a	def
一个\t制表符长度是8
12345678def
换行符 \n
abc
def
单引号 \'
abc'def
双引号 \"
abc"def
反斜杠本身 \
abc\def

练习

通过Scanner从控制台读取字符串,然后把字符串转换为字符数组
参考的转换方式:

String str = “abc123”;
char[] cs = str.toCharArray();

转换为字符数组后,筛选出控制台读取到的字符串中的大写字母和数字,并打印出来

public class Main {
    public static void main(String[] args) {
        Scanner str=new Scanner(System.in);
        String whu=str.nextLine();
        char[] cs=whu.toCharArray();
        System.out.println(cs);
        for(int i=0;i<cs.length;i++){
            if(Character.isUpperCase(cs[i])|Character.isDigit(cs[i]))
                System.out.println(cs[i]);
        }
    }
}

String

创建字符串

字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象
常见创建字符串手段:

  1. 每当有一个字面值出现的时候,虚拟机就会创建一个字符串
  2. 调用String的构造方法创建一个字符串对象
  3. 通过+加号进行字符串拼接也会创建新的字符串对象
    public static void main(String[] args) {
        String garen ="盖伦"; //字面值,虚拟机碰到字面值就会创建一个字符串对象
         
        String teemo = new String("提莫"); //创建了两个字符串对象
         
        char[] cs = new char[]{'崔','斯','特'};
         
        String hero = new String(cs);//  通过字符数组创建一个字符串对象
         
        String hero3 = garen + teemo;//  通过+加号进行字符串拼接

特点

final

不可继承

immutable

永远不可改变,定义之后表现的仿佛一个常量

字符串格式化

举例

    public static void main(String[] args) {
  
        String name ="盖伦";
        int kill = 8;
        String title="超神";
          
        //直接使用+进行字符串连接,编码感觉会比较繁琐,并且维护性差,易读性差
        String sentence = name+ " 在进行了连续 " + kill + " 次击杀后,获得了 " + title +" 的称号";
          
        System.out.println(sentence);
         
        //格式化字符串
        //%s表示字符串,%d表示数字,%n表示换行
        String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n";
         
        String sentence2 = String.format(sentenceFormat, name,kill,title);
         
        System.out.println(sentence2);
         
    }

字符串长度

    public static void main(String[] args) {
  
        String name ="盖伦";
         
        System.out.println(name.length());
         
        String unknowHero = "";
         
        //可以有长度为0的字符串,即空字符串
        System.out.println(unknowHero.length());
          
    }

练习

创建一个长度是8的字符串数组
使用8个长度是5的随机字符串初始化这个数组
对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)

注1: 不能使用Arrays.sort() 要自己写
注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序

import java.util.Arrays;
 
public class TestString {
 
    public static void main(String[] args) {
 
        String[] ss = new String[8];
        for (int i = 0; i < ss.length; i++) {
            String randomString = randomString(5);
            ss[i] = randomString;
        }
        System.out.println("未排序前的字符串数组:");
        System.out.println(Arrays.toString(ss));
 
        for (int j = 0; j < ss.length; j++) {
            for (int i = 0; i < ss.length - j - 1; i++) {
                char firstChar1 = ss[i].charAt(0);
                char firstChar2 = ss[i + 1].charAt(0);
                firstChar1 = Character.toLowerCase(firstChar1);
                firstChar2 = Character.toLowerCase(firstChar2);
 
                if (firstChar1 > firstChar2) {
                    String temp = ss[i];
                    ss[i] = ss[i + 1];
                    ss[i + 1] = temp;
                }
            }
        }
        System.out.println("排序后的字符串数组:");
        System.out.println(Arrays.toString(ss));
    }
 
    private static String randomString(int length) {
        String pool = "";
        for (short i = '0'; i <= '9'; i++) {
            pool += (char) i;
        }
        for (short i = 'a'; i <= 'z'; i++) {
            pool += (char) i;
        }
        for (short i = 'A'; i <= 'Z'; i++) {
            pool += (char) i;
        }
        char cs[] = new char[length];
        for (int i = 0; i < cs.length; i++) {
            int index = (int) (Math.random() * pool.length());
            cs[i] = pool.charAt(index);
        }
        String result = new String(cs);
        return result;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值