1 编程题 1-8

1,
data[i].indexOf("汉", 1) > 0
//第一个参数是要查找的字符(“汉”)。
//第二个参数是起始查找位置(1 表示从字符串的第二个字符开始查找)

str.toCharArray() 字符数组

2,
StringBuffer buffer = new StringBuffer(str);

/*StringBuffer 是一个可变的字符序列,它可以动态地修改字符串(添加、删除、反转等),而不需要每次都创建新的字符串对象。
new StringBuffer(str) 创建一个 StringBuffer 对象,并初始化为 str 字符串的内容。在这里,str 是在前面的代码中构建的转换后的字符串。*/

3,
buffer.reverse()

4,
replaceAll(String regex, String replacement)

String newStr = line.replaceAll("\\d+", "");
//匹配一个或多个连续的数字替换成空


2,
image

//System.out.println(Arrays.toString(split));输出数组
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        String[] split = line.split(";");
        //以分号分开
        int sum=0;
        for(int i=0;i<split.length;i++)
        {
            String book=split[i];
            int index = book.indexOf(":");  //冒号为全角字符
            String bookname=book.substring(0, index).trim();
            //trim用于去除两端空格,不去除中间的
            String bookPrice=book.substring(index+1).trim();
            int price=Integer.parseInt(bookPrice);
            //字符串转为数字
            sum+=price;
            System.out.println(bookname+"--"+bookPrice);
        }
        System.out.println("总价格--"+sum);
    }
}

3,

import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            String line = sc.nextLine(); // 读入字符串
            if (line.equals("end"))
                break;
            String[] split = line.split("\\D+");
            // \\D+ 表示匹配一个或多个连续的非数字字符。
           /*假设用户输入的字符串是 "abc123def456gh789",
           执行 line.split("\\D+") 后的结果会是:
           ["", "123", "456", "789"]
*/
            int i;
            long sum = 0;
            for (i = 0; i < split.length; i++) {
                if (!split[i].equals("")) {
                    int digit = Integer.parseInt(split[i]);
                    sum += digit;
                }
            }
            System.out.println(sum);
        }
    }
}

4,字符串用equals
image


/*
Map<String,Integer>
LinkedHashMap;
map.put,map.get;
map.gerOrDefault();
map.keySet();
*/
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name=null;
        Map<String,Integer> map=new LinkedHashMap<String,Integer>();

        while(true)
        {
            name=sc.next();
            if(name.equals("end"))
                break;
            map.put(name, map.getOrDefault(name, 0)+1);
        }
/*
V getOrDefault(Object key, V defaultValue);

map.getOrDefault(name, 0)获取当前名字的出现次数,
        如果该名字尚未出现,则返回0。
        然后将这个次数加1,并存回map。
*/


        for(String name1:map.keySet())
        {
            System.out.println(name1+" "+map.get(name1));
//keySet() 方法返回一个包含映射中所有键的 Set 视图。
// 这意味着你可以通过这个 Set 来遍历所有的键。
        }

    }
}

5,

Character.isJavaIdentifierStart(first)
Character.isJavaIdentifierPart(part)
is Java Identifier Part


s.endsWith();

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String s;
        while (reader.hasNext())
        {
            s = reader.nextLine();
            if (s.endsWith(".java") && judge(s))
                System.out.println("true");
            else
                System.out.println("false");
        }
    }
    public static boolean judge(String s)
    {
        boolean flag = true;
        if (Character.isJavaIdentifierStart(s.charAt(0)))
        {
            for (int i = 1; i < s.length()-5; i++)
            {
                if (!Character.isJavaIdentifierPart(s.charAt(i)))
                    flag = false;
            }
        }
        else
            flag=false;
        return flag;
    }
}

6,

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String s;
        while (reader.hasNext())
        {
            s = reader.nextLine();
            if (s.endsWith(".java") && judge(s))
                System.out.println("true");
            else
                System.out.println("false");
        }
    }
    public static boolean judge(String s)
            //定义成静态方法才不用实例化,否则需要实例化main
    {
        boolean flag = true;
        if (Character.isJavaIdentifierStart(s.charAt(0)))
        {
            for (int i = 1; i < s.length()-5; i++)
            {
                if (!Character.isJavaIdentifierPart(s.charAt(i)))
                    flag = false;
            }
        }
        else
            flag=false;
        return flag;
    }
}

2 判断题

1,在 Java 中,String 对象是不可变的(immutable)。这意味着,一旦创建了一个 String 对象,其内容就不能被修改。任何对字符串的修改都会创建一个新的 String 对象,而不是修改原有的对象。

2,字符串缓冲区类(StringBuffer)是一个灵活且高效的处理字符串的工具,特别适用于需要频繁进行字符追加、删除或修改的场景。
image

3 单选题

1,字符串常量池
image

image
image
image
image

2,
加号运算符在字符串与数字相结合时,会将数字转换为字符串)


   int a = 2, b = 8, c = 6;
        String s = "abc";
        System.out.println(a + b + s + c);
		//10abc6

3,如果你使用无参数构造函数创建 StringBuffer,它的初始容量为 16。这意味着在不需要扩展容量的情况下,StringBuffer 可以存储最多 16 个字符。

4,字符串数字转化
float value = Float.parseFloat(str);
image

image

5,
new String(chars,1,3)包含3
s.substring(3,4)不包括4
int i=Integer.parseInt(str1,2)
视为二进制数分析

!!!字符串不能改变

6,字节和字符串(不懂!)
image
7,
image

8
image

image

image

,由于 StringBuffer 的 append 方法返回的是对原对象的引用(即 buffer 本身),因此 buffer2 和 buffer 实际上指向的是同一个 StringBuffer 对象。
10,
image

image

4 多选题

1,封装类和基本数据类型
image
image
image
2,
image
3,image
4,image

posted on 2024-10-20 14:59  Hoshino1  阅读(6)  评论(0编辑  收藏  举报