Java2EE练习及面试题_chapter09Java常用类_下

简介: Java2EE练习及面试题_chapter09Java常用类_下

题目14

String s = new String(“xyz”);创建了几个String Object

答:两个,一个字符对象,一个字符对象引用对象


题目15

是否可以继承String类

答:String类是final类故不可以继承


题目16

String与StringBuffer的区别

答:String的长度是不可变的,StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法


题目17

一、判断题

1.用运算符“==”比较字符串对象时,只要两个字符串包含的是同一个值,结果便为 true。()

2.String 类字符串在创建后可以被修改。()

3.方法 replace (String srt1, String srt2)将当前字符串中所有 srt1 子串换成 srt2子串。

4.方法compareTo在所比较的字符串相等时返回 0。()

5.方法IndexOf((char ch,-1)返回字符ch在字符串中最后一次出现的位置。()

6.方法startsWith()判断当前字符串的前缀是否和指定的字符串一致。()


【答案】
判断:
1.难度:较难
答案:错误
知识点:用运算符“==”比较字符串对象,实际上是比较并确定它们是否为内存中的同一个
对象。
2.难度:容易
答案:错误
知识点:String 类字符串对象是常量,在创建后不能修改。
3.难度:适中
答案:正确
知识点:String 类的方法 replace(String srt1, String srt2)用字符串 srt2 的内容替换当
前字符串中遇到的所有 srt1 子串。
4.难度:容易
答案:正确
知识点:不仅如此,如果调用compareTo的字符串比作为参数的字符串小,则返回一个负数;
如果调用compareTo的字符串比作为参数的字符串大时,则返回一个正数。
5.难度:适中
答案:错误
知识点:方法lastIndexOf((char ch)返回字符ch在字符串中最后一次出现的位置。
6.难度:适中
答案:正确
知识点:startsWith(prefix)方法判断当前字符串的前缀是否和指定的字符串 prefix 一致,如
果一致,返回 true,否则返回 false。

题目18

1.下面哪个选项正确地声明了一个字符串数组:

A char str[]

B char str[][]

C String str[]

D String str[10]

2. 请看下面的程序段:

public class class1{

public static void main(String a[]) {

int x [] = new int[8];

System .out .println(x [1]);

} }

当编译和执行这段代码时会出现:

A 有一个编译错误为“possible reference before assignment”

B 有一个编译错误为“illegal array declaration syntax”

C 有异常出现为“Null Pointer Exception”

D 正确执行并且输出 0

3.已知 String 对象 s=“abcdefg”,则s.substring(2, 5)的返回值为____。

A “bcde”

B “cde”

C “cdef”

D “def”

4.请看下面的代码 String s = “people”; String t = “people”; String c[ ] = {“p”,”e”,”o”,”p”,”l” ,”e”};

下面哪一选项的语句返回值为真:

A s .equals(t);

B t .equals©;

C st;

D t .equals(new String(“people”));

E tc;

5.已知 s 为一个 String 对象,s=“abcdefg”,则s.charAt(1)的返回值为____。

A a

B b

C f

D g

6.请看下面的代码 String s = “good”; 下面选项语句书写正确的是:

A s += “student”;

B char c = s[1];

C intlen = s .length;

D String t = s.toLowerCase( );

7.正确创建一个含有 5 个元素的字符串数组的选项是:

A String s[ ] = new String[5]; for(int i=0;i<5;s[i++]=“”);

B String s[ ]={“”, “”, “”, “”, “”};

C String s[5];

D String [5]s;

8.请看下面的代码

public class class1{

String str = new String(“Girl”);

charch[ ]={‘d’,‘b’,‘c’};

public static void main(String args[ ]){

class1 x=new class1( );

x.change(x.str,x.ch);

System .out .println(x.str +" and "+x.ch[0]+x.ch[1]+x.ch[2]);

}

public void change(String str,charch[ ]){

str=“Boy”; ch[0]=‘a’;

} }

该程序的输出结果是:

A Boy and dbc

B Boy and abc

C Girl and dbc

D Girl and abc

选择:
1.难度:容易
答案:C 
知识点:声明数组时,不允许在数组名后面的括号内指定数组元素的个数。
2.难度:适中
答案:D 
知识点:一旦数组被创建则它的元素就被初始化为 0 
3.难度:较难
答案:B 
知识点:substring(begpos, endpos)取出一个子串,该子串从begpos位置起至 endpos-1 
为结束。
4.难度:较难
答案:AD C
知识点:s 和 t 不是相同的引用,而在使用==比较引用时,如果两个引用指向内存中的同一个
对象,则结果为真。
5.难度:容易
答案:B 
知识点:字符串中第一个字符的 index 取值是 0。
6.难度:适中
答案:AD 
知识点:s 是字符串不是数组,因此 B 错误;C 错误是由于 length 后要加括号。
7.难度:适中
答案:AB 
知识点:每个数组元素在初始化之前都为 null。
8.难度:较难
答案:D 
知识点:由于 change(String str,charch[ ]) 中str为值参数,所以str=”Boy”的结果不
会影响实际参数。

题目19

String str = new String(“hello”);创建了哪些对象?

字符串常量池中有一个对象,堆中有一个字符串对象。

题目20

如何将String类型转化Number类型?举例说明String str = “123”;
答任意一个都对:
    Integer num1 = new Integer(str);
    int num2 = Integer.parseInt(str);
    Integer num3 = Integer.valueOf(str);


题目21

1.已知sb为StringBuffer的一个实例,且sb= "abcde ",则sB reverse()后sb的值为____。

2.已知sb为StringBuffer的一个实例,且sb= "abcde ",则sB delete(1,2)后sb的值为 ____。

填空:
1.难度:容易
答案: "edcba" 
知识点:reverse() 反转当前字符串。
2难度:适中
答案:"acde "
知识点:delete(begpos, endpos)删除当前StringBuffer对象中自begpos位置起,到
endpos-1位置止的子字符串。

题目22

/*
    请编写一个 Application 实现如下功能:接受命令行中给出的一个字母串,先将该串原样输出,然后判断该串的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。
     */
package com.jerry.exer1;
/**
 * @author jerry_jy
 * @create 2022-10-04 10:47
 */
public class Exer1 {
    public static void main(String[] args) {
//        System.out.println(Math.round(11.5));//12
//        System.out.println(Math.round(-11.5));//-11
//        System.out.println(args[0]);
        int count = 0;
        if (args.length!=0){
            System.out.println(args[0]);//接受命令行中给出的一个字母串,先将该串原样输出
            if (args[0].charAt(0)>=65&&args[0].charAt(0)<=90){
                for (int i = 0; i < args[0].length(); i++) {
                    if (args[0].charAt(i)>=65&&args[0].charAt(i)<=90){
                        System.out.println(args[0].charAt(i));
                        count++;
                    }
                }
                System.out.println();
                System.out.println("共有" + count + " 个大写字母。");
            }else {
                System.out.println("第一个字母不是大写字母!");
            }
        }
    }
}

题目23

/*
一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出。
 */
package com.jerry.exer1;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-10-04 11:32
 */
public class Exer2 {
    /*
    一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出。
     */
    public static void main(String[] args) {
        System.out.println("接受用户输入的一行字符串: ");
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        if (str != null) {
            int count = 0;
            char[] chars = str.toCharArray();
            System.out.println("字符个数:" + chars.length);
            System.out.print("数组反转:");
            //方式一:
//            for (int i = chars.length-1; i >=0 ; i--) {
//                System.out.print(chars[i]);
//            }
            //方式二:直接调用StringBuffer.reverse()方法
            System.out.println(new StringBuffer(str).reverse());
        } else {
            System.out.println("空串");
        }
    }
}

题目24

/*
创建BigDecimalDemo类,在类中分别定义add(),sub(),mul()和div()方法实现加、减、乘、除运算,并输出运算结果。要求除法,可以处理商的精度。
 */
package com.jerry.exer1;
/**
 * @author jerry_jy
 * @create 2022-10-04 16:29
 */
import java.math.BigDecimal;
public class BigDecimalDemo {
    static final int location = 10;
    /**
     * @paramargs 这个类提供精确的浮点数运算
     */
    public static BigDecimal add(double value1, double value2) {
        BigDecimal b1 = new BigDecimal(Double.toString(value1));
        BigDecimal b2 = new BigDecimal(Double.toString(value2));
        return b1.add(b2);
    }
    public static BigDecimal sub(double value1, double value2) {
        BigDecimal b1 = new BigDecimal(Double.toString(value1));
        BigDecimal b2 = new BigDecimal(Double.toString(value2));
        return b1.subtract(b2);
    }
    public static BigDecimal BigDecimalmul(double value1, double value2) {
        BigDecimal b1 = new BigDecimal(Double.toString(value1));
        BigDecimal b2 = new BigDecimal(Double.toString(value2));
        return b1.multiply(b2);
    }
    /*
     * 提供精确的除法运算当除不尽时,精确到小数点后10位,以后的数字四舍五入
     */
    public static BigDecimal div(double value1, double value2) {
        return div(value1, value2, location);
    }
    /*
     * @param b 表示需要精确到小数点以后的位数
     */
    public static BigDecimal div(double value1, double value2, int b) {
        if (b < 0) {
            System.out.println("b值必须大于等于0");
        }
        BigDecimal b1 = new BigDecimal(Double.toString(value1));
        BigDecimal b2 = new BigDecimal(Double.toString(value2));
        return b1.divide(b2, b, BigDecimal.ROUND_HALF_UP);
    }
    public static void main(String[] args) {
        BigDecimalDemo b = new BigDecimalDemo();
        System.out.println("两个数字相加结果:" + b.add(-7.5, 8.9));
        System.out.println("两个数字相减结果:" + b.sub(-7.5, 8.9));
        System.out.println("两个数字相乘结果:" + b.BigDecimalmul(-7.5, 8.9));
        System.out.println("两个数字相除结果,结果小数后保留10位:" + b.div(10, 2));
        System.out.println("两个数字相除,结果保留小数后5位:" + b.div(-7.5, 8.9, 5));
    }
}

题目25

/*
编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。
 */
package com.jerry.exer1;
import java.util.Arrays;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-10-04 16:40
 */
public class Exer4 {
     // 输入的字符串应该是数字型,对于不是该类型的应该做正则表达式的校验
    public static void main(String[] args) {
        System.out.println("请输入第一个数字型字符串:");
        Scanner scanner1 = new Scanner(System.in);
        String str1 = scanner1.next();
        System.out.println("请输入第二个数字型字符串:");
        Scanner scanner2 = new Scanner(System.in);
        String str2 = scanner2.next();
        Exer4 exer4 = new Exer4();
        System.out.println("两个字符串的拼接:" + exer4.concat(str1, str2));
        System.out.println("整数相加:" + exer4.intPlus(str1, str2));
        System.out.println("浮点数相加:" + exer4.floatPlus(str1, str2));
    }
    public String concat(String str1, String str2) {
        return str1 + str2;
    }
    public int intPlus(String str1, String str2) {
        return Integer.parseInt(str1) + Integer.parseInt(str2);
    }
    public float floatPlus(String str1, String str2) {
        return Float.parseFloat(str1) + Float.parseFloat(str2);
    }
}

题目26

/*
 对字符串中字符进行自然顺序排序
 */
package com.jerry.exer1;
import java.util.Arrays;
/**
 * @author jerry_jy
 * @create 2022-10-04 18:38
 */
public class Exer5 {
    public static void main(String[] args) {
        String str = "21Fdfw85KyeD";
        char[] chars = str.toCharArray();
        Arrays.sort(chars);
        System.out.println(new String(chars));
    }
}

题目27

/*
中国有句俗语叫“三天打鱼两天晒网”。如果从1990年1月1日起开始执行“三天打鱼两天晒网”。如何判断在以后的某一天中是“打鱼”还是“晒网”?
 */
package com.jerry.exer1;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Period;
import java.util.Date;
/**
 * @author jerry_jy
 * @create 2022-10-04 18:59
 */
public class Exer6 {
    public static void main(String[] args) {
        String date1 = "1990/1/1"; // 开始“三天打鱼两天晒网”的日期
        String date2 = "2022/10/4"; // 手动输入的日期
        long day = getQuot(date1, date2);// 传入值计算时间差
        if (day % 5 == 0 || day % 5 == 4) {
            System.out.println("今天是休息日,可以晒晒网");
        } else {
            System.out.println("今天要工作,打鱼了!");
        }
    }
    public static long getQuot(String time1, String time2) {
        long dayDistance = 0;
        SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd");
        try {
            Date date1 = ft.parse(time1);
            Date date2 = ft.parse(time2);
            dayDistance = date2.getTime() - date1.getTime();
            dayDistance = dayDistance / 1000 / 60 / 60 / 24 + 1;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dayDistance;
    }
}

题目28

/*
完成MathLib类,可以做加,减,乘,除等功能,其中加法不但可以做数字的加法,还可以做字符串的相加。
 */
package com.jerry.exer1;
/**
 * @author jerry_jy
 * @create 2022-10-04 19:30
 */
public class Exer7 {
    /*
    完成MathLib类,可以做加,减,乘,除等功能,其中加法不但可以做数字的加法,还可以做字符串的相加。
     */
    public static void main(String[] args) {
        System.out.println(MathLib.add(1, 2));
        System.out.println(MathLib.add("1", "2"));
        System.out.println(MathLib.sub(1, 2));
        System.out.println(MathLib.multi(1, 2));
        System.out.println(MathLib.div(1, 2));
    }
}
class MathLib{
    public static double add(double num1,double num2){
        return num1+num2;
    }
    public static double sub(double num1,double num2){
        return num1-num2;
    }
    public static double multi(double num1,double num2){
        return num1*num2;
    }
    public static double div(double num1,double num2){
        return num1/num2;
    }
    public static String add(String str1,String str2){
        return str1+str2;
    }
}

题目29

/*
任意给定的一串字母,统计字符串里面的大写字母和小写字母的个数。
 */
package com.jerry.exer1;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-10-04 19:37
 */
public class Exer8 {
    /*
    任意给定的一串字母,统计字符串里面的大写字母和小写字母的个数。
     */
    public static void main(String[] args) {
        System.out.println("请从键盘任意输入一串字符,统计字符串里面的大写字母和小写字母的个数");
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
//        String str = "1f5a64gFE4g6hT";
        int count1 = 0, count2 = 0;
        char[] chars = str.toCharArray();
        System.out.print("大写字母:");
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] >= 65 && chars[i] <= 90) {
                System.out.print(chars[i]);
                count1++;
            }
        }
        System.out.println();
        System.out.println("大写字母的个数:" + count1);
        System.out.print("小写字母:");
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] >= 97 && chars[i] <= 122) {
                System.out.print(chars[i]);
                count2++;
            }
        }
        System.out.println();
        System.out.println("小写字母的个数:" + count2);
    }
}

题目30

/*
输入一句5个字的话,然后将它逆序输出。例如:
原数组:我爱你中国
逆序输出:国中你爱我
提示:先声明一个字符串数组,每个汉字作为字符串数组的一个元素,然后再从数组末尾开始循环输出。
 */
package com.jerry.exer1;
/**
 * @author jerry_jy
 * @create 2022-10-04 20:05
 */
public class Exer11 {
    public static void main(String[] args) {
        char[] chars = {'我','爱','你','中','国'};
        //方式一:
//        System.out.println(new StringBuffer(String.valueOf(chars)).reverse());
        //方式二:
        for (int i = chars.length-1; i >=0; i--) {
            System.out.print(chars[i]);
        }
    }
}

题目31

/*
输出字符串"ddejidsEFALDFfnef2357 3ed"里的大写字母数,小写英文字母数,非英文字母数
 */
package com.jerry.exer1;
/**
 * @author jerry_jy
 * @create 2022-10-04 20:09
 */
public class Exer12 {
    public static void main(String[] args) {
        String str = "ddejidsEFALDFfnef2357 3ed";
        char[] chars = str.toCharArray();
        System.out.print("大写字母数:");
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] >= 65 && chars[i] <= 90) {
                System.out.print(chars[i]);
            }
        }
        System.out.println();
        System.out.print("小写字母数:");
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] >= 97 && chars[i] <= 122) {
                System.out.print(chars[i]);
            }
        }
        System.out.println();
        System.out.print("非英文字母数:");
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] < 65 || (chars[i] > 90 && chars[i] < 97) || chars[i] > 122) {
                System.out.print(chars[i]);
            }
        }
    }
}

题目32

/*
求出“hijavahehejavahejava”字符串里面包含几个“java字符串。”
 */
package com.jerry.exer1;
/**
 * @author jerry_jy
 * @create 2022-10-04 20:20
 */
public class Exer13 {
    public static void main(String[] args) {
        int count = 0;
        String str = "hijavahehejavahejava";
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == 'j' && chars[i + 1] == 'a' && chars[i + 2] == 'v' && chars[i + 3] == 'a') {
                count++;
            }
        }
        System.out.println("里面包含 " + count + " 个“java字符串。”");
    }
}

题目33

/*
编写java程序,随便输入两个单词,两个单词之间以空格隔开,输出时每个单词的首字母变为大写。如输入:“hello java”,输出为“Hello Java”
 */
package com.jerry.exer1;
import org.junit.Test;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-10-04 21:20
 */
public class Exer14 {
    public static void main(String[] args) {
        System.out.println("随便输入两个单词,两个单词之间以空格隔开");
//        Scanner scanner = new Scanner(System.in);
//        String str = scanner.next();
        String str = "hello java";
        char[] chars = str.toCharArray();
        int index = 0;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] < 97 || chars[i] > 122){
                index = i;
                System.out.println("index:"+index);
            }
        }
        chars[0]= (char) (chars[0]-32);
        chars[index+1]= (char) (chars[index+1]-32);
        System.out.println(new String(chars));
    }
}


相关文章
|
1天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
10 5
|
1天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
7 3
|
1天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
8 2
|
1天前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
8 2
|
1天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
15 5
|
1天前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
8 1
|
SQL 缓存 安全
Java高频面试题目
面试时面试官最常问的问题总结归纳!
139 0
JAVA高频面试题目集锦(6)
JAVA高频面试题目集锦(6)
138 0
JAVA高频面试题目集锦(6)
|
存储 安全 Java
JAVA高频面试题目集锦(5)
JAVA高频面试题目集锦(5)
183 0
JAVA高频面试题目集锦(5)
|
算法 安全 Java
JAVA高频面试题目集锦(4)
JAVA高频面试题目集锦(4)
104 0
JAVA高频面试题目集锦(4)