JAVA300第八章常用类作业

一、选择题

1. 以下选项中关于int和Integer的说法错误的是(BD)。

A.int是基本数据类型,Integer是int的包装类,是引用数据类型

B.int的默认值是0,Integer的默认值也是0

C.Integer可以封装了属性和方法提供更多的功能

D.Integer i=5;该语句在JDK1.5之后可以正确执行,使用了自动拆箱功能

解析
B:int的默认值是0,Integer的默认值是null
D:使用了自动装箱功能

2. 分析如下Java代码,该程序编译后的运行结果是(A)。

public static void main(String[ ] args) {
    String str=””;
    str.concat("abc");
    str.concat("def");
    System.out.println(str);
}

A.null

B.abcdef

C.编译错误

D.运行时出现NullPointerException异常

解析
String是final不可更改的

3. 以下关于String类的代码的执行结果是(B)。

public class Test2 {
    public static void main(String args[]) {
        String s1 = new String("bjsxt");
        String s2 = new String("bjsxt");
        if (s1 == s2)            
             System.out.println("s1 == s2");
        if (s1.equals(s2))        
             System.out.println("s1.equals(s2)");
    }
}

A.s1 == s2

B.s1.equals(s2)

C.s1 == s2

s1.equals(s2)

D.以上都不对

解析
s1和s2是两个不同的对象,所以二者地址不相等,s1 != s2
sequals方法在String类中得到了重写,含义已经变为比较字符串中值是否相等,所以s1.equals(s2) == true

4. 在Java中,以下File类的方法中( C )用来判断是否是目录。

A.isFile( )

B.getFile( )

C.isDirectory( )

D.getPath( )

5. 分析下面代码的结果(A)。

public static void main(String args[]) {
        String s = "abc";
        String ss = "abc";
        String s3 = "abc" + "def";
        String s4 = "abcdef";
        String s5 = ss + "def";
        String s2 = new String("abc");
        System.out.println(s == ss);
        System.out.println(s3 == s4);
        System.out.println(s4 == s5);
        System.out.println(s4.equals(s5));
    }

A.true true false true

B.true true true false

C.true false true true

D.false true false true

二、简答题

1. 什么是自动装箱和自动拆箱?

自动装箱:基本类型的数据处于需要对象的环境中时,会自动转为“对象”。
自动拆箱:每当需要一个值时,对象会自动转成基本数据类型,没必要再去显式调用intValue()、doubleValue()等转型方法。

2. String、StringBuffer、StringBuilder区别与联系。

  1. 是否产生新的对象
  • String会产生新的对象,效率低下,浪费内存空间
  • StringBuffer,StringBuilder,不会产生新的对象,都是在原本的缓冲区中操作
  1. 是否可变
  • String是不可变的
  • StringBuffer,StringBuilder可变的
  1. 是否安全
  • StringBuffer是安全的
  • StringBuilder是不安全
  1. 是否多线程
  • StringBuffer适合多线程操作
  • StringBuilder适合单线程操作
  1. 效率
  • StringBuilder>StringBuffer>String

3. String str=”bjsxt”; 和String str= new String(“bjsxt”); 的区别。

  1. 当使用String str=" bjsxt “,这种方式时,先去内存的堆内存中找是否存在” bjsxt "这个字符串,若存在,则将地址引用。若不存在则创建。
  2. 当使用String str=new String("bjsxt “);时,不管事先是否存在” bjsxt ",每次都会创建其新的对象。

4. File类的方法mkdir跟mkdirs,有什么区别?

mkdir():只能创建一层目录
mkdirs(): 创建多层目录

5. 简述枚举的使用。

当你需要定义一组常量时,可以使用枚举类型

enum  枚举名 {
      枚举体(常量列表)
}

三、编码题

1. 验证键盘输入的用户名不能为空,长度大于6,不能有数字。

提示:使用字符串String类的相关方法完成
可以使用Scanner的nextLine()方法,该方法可以接口空的字符串。
import java.util.Scanner;

public class Homework1 {
	public static void main(String[] args) {
		System.out.println("输入一个用户名:");
		Scanner scanner = new Scanner(System.in);
		String username = scanner.nextLine();
		scanner.close();
		if (username.equals("")) {
			System.out.println("用户名不能为空");
		} else if (username.length() <= 6) {
			System.out.println("用户名长度需要大于6");
		} else {
			for (int i = 0; i < username.length(); i++) {
				if (Character.isDigit(username.charAt(i))) {
					System.out.println("用户名不能有数字");
				}

			}
		}
		
	}
}

2. 接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。

提示:使用包装类Integer、Double和日期转换类DateFormat实现
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class Homework22 {
	public static void main(String[] args) throws ParseException {
		System.out.print("请输入年龄:");
		Scanner scanner =new Scanner(System.in);
		String age = scanner.nextLine();
		System.out.print("请输入分数:");
		String grade = scanner.nextLine();
		System.out.print("请输入入学时间(格式为:2020-10-10):");
		String time = scanner.nextLine();
		//转换为整数、浮点数、日期类型
		int age2 = Integer.parseInt(age); 
		double grade2 = Double.parseDouble(grade);
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Date time2 = df.parse(time);//先转为时间类型
		Calendar c = new GregorianCalendar();
		c.setTime(time2);//再转为日期类型
		
		System.out.println("年龄:"+age2+"岁\n"
							+"分数:"+grade2+"分\n"
							+"入学时间:"+time2);	
	}
}

3. 根据交通信号灯颜色决定汽车停车、行驶和慢行

提示:使用枚举实现
public class Homework33 {
	public static void main(String[] args) {
		TrafficLight light = TrafficLight.GREEN;
		switch (light) {
		case GREEN:
			System.out.println("gkd");
			break;
		case YELLOW:
			System.out.println("慢点开");
			break;
		case RED:
			System.out.println("STOP");
			break;
		}
	}
}
enum TrafficLight{
	RED,YELLOW,GREEN
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值