尚学堂JAVA第八章 作业

尚学堂JAVA第八章 作业

  • 一、选择题
    • 1、以下选项中关于int和Integer的说法错误的是(B D )。(选择二项)
    • 2、分析如下Java代码,该程序编译后的运行结果是( )。(选择一项)
    • 3、以下关于String类的代码的执行结果是( B)。(选择一项)
    • 4、在Java中,以下File类的方法中( C)用来判断是否是目录。(选择一项)
    • 5、分析下面代码的结果( A)。(选择一项)
  • 二、简答题
    • 1、什么是自动装箱和自动拆箱?
    • 2、String、StringBuffer、StringBuilder区别与联系。
    • 3、String str=”bjsxt”; 和String str= new String(“bjsxt”); 的区别。
    • 4、File类的方法mkdir跟mkdirs,有什么区别?
    • 5、简述枚举的使用。
  • 三、编码题
    • 1、验证键盘输入的用户名不能为空,长度大于6,不能有数字。
    • 2、接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。
    • 3、根据交通信号灯颜色决定汽车停车、行驶和慢行

作业链接: http://www.sxt.cn/Java_jQuery_in_action/eight-task.html

一、选择题

1、以下选项中关于int和Integer的说法错误的是(B D )。(选择二项)

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代码,该程序编译后的运行结果是( )。(选择一项)

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异常

(解析A:String类的对象是final型,不能被修改。concat方法是生成一个新的字符串,不是修改原字符串)

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.以上都不对

(解析为什么A错误:s1和s2都是new的对象,所以s1==s2是错误的)

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";//相当于s3 = "abcdef";
        String s4 = "abcdef";
        String s5 = ss + "def";
        String s2 = new String("abc");
        System.out.println(s == ss);//true
        System.out.println(s3 == s4);//true,因为编译器做了优化,直接在编译的时候将字符串进行拼接
        System.out.println(s4 == s5);//falese,编译器编译的时候不知道变量中存储的是什么,所以没办法在编译的时候优化
        System.out.println(s4.equals(s5));//true
    }

A.true true false true

B.true true true false

C.true false true true

D.false true false true
(解析直接注释在代码中了)

二、简答题

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

http://www.sxt.cn/Java_jQuery_in_action/eight-autoboxing-unboxing.html
自动装箱:

基本类型的数据处于需要对象的环境中时,会自动转为“对象”。
我们以Integer为例:在JDK1.5以前,这样的代码 Integer i = 5 是错误的,必须要通过Integer i = new Integer(5) 这样的语句来实现基本数据类型转换成包装类的过程;而在JDK1.5以后,Java提供了自动装箱的功能,因此只需Integer i = 5这样的语句就能实现基本数据类型转换成包装类,这是因为JVM为我们执行了Integer i = Integer.valueOf(5)这样的操作,这就是Java的自动装箱。

自动拆箱:

每当需要一个值时,对象会自动转成基本数据类型,没必要再去显式调用intValue()、doubleValue()等转型方法。
如 Integer i = 5;int j = i; 这样的过程就是自动拆箱。
我们可以用一句话总结自动装箱/拆箱:
自动装箱过程是通过调用包装类的valueOf()方法实现的,而自动拆箱过程是通过调用包装类的

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

http://www.sxt.cn/Java_jQuery_in_action/eight-buffebuild.html

String:不可变字符序列。
StringBuffer:可变字符序列,并且线程安全,但是效率低。
StringBuilder:可变字符序列,线程不安全,但是效率高(一般用它)。

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

String str=”bjsxt”中的str是常量对象
String str= new String(“bjsxt”)中的str是String对象

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

mkdir:目录结构中有一个不存在,则不会创建整个目录树
mkdirs:目录结构中有一个不存在也没关系;创建整个目录树

5、简述枚举的使用。

https://blog.csdn.net/qq_34834846/article/details/81624361

三、编码题

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

提示:使用字符串String类的相关方法完成

可以使用Scanner的nextLine()方法,该方法可以接口空的字符串。

package cn.sxt.test;

import java.util.Scanner;

/**
 * 验证键盘输入的用户名不能为空,长度大于6,不能有数字。
 * @author Nirvana
 *
 */
public class Homework01 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入你的用户名");
		String id=scanner.next();
		boolean flag=false;
		
		for(int i=0;i<id.length();i++) {
			char num=id.charAt(i);
			if(Character.isDigit(num)) { //使用Character.isDigit()方法判断是否包含数字
				flag=true;
				break;
			}
		}
		
		while(id.length()<=6||flag) {
			if(id.length()<=6) {
				System.out.println("用户名须要大于6位");
			}
			
			if(flag) {
				System.out.println("用户名不能包含数字");
			}
			
			
			System.out.println("请输入你的用户名");
			id=scanner.next();
		}
		System.out.println("创建成功!你的用户名为:"+id);
	}
}

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

提示:使用包装类Integer、Double和日期转换类DateFormat实现
(题意不清,大概实现了要求)

package cn.sxt.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

/**
* 接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。
* @author Nirvana
*
*/
public class Homework02 {
 public static void main(String[] args) throws ParseException {
 	Scanner scanner=new Scanner(System.in);
 	System.out.println("请输入年龄");
 	String inputAge=scanner.next();
 	System.out.println("请输入分数");
 	String intputGrade=scanner.next();
 	System.out.println("请输入入学日期,格式为yyyy-MM-dd");
 	String inputTime=scanner.next();
 	
 	int age=Integer.parseInt(inputAge);
 	double grade=Double.parseDouble(intputGrade);
 	
 	
 	
 	SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
 	Date date=s.parse(inputTime);
 	GregorianCalendar schooltime=new GregorianCalendar();
 	schooltime.setTime(date);
 	int year=schooltime.get(Calendar.YEAR);
 	int month=schooltime.get(Calendar.MONTH)+1;
 	int day=schooltime.get(Calendar.DAY_OF_MONTH);
 	System.out.println("年龄为:"+age+",分数为:"+grade+",入学日期为:"+year+"年"+month+"月"+day+"日");
 }
}

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

提示:使用枚举实现

package cn.sxt.test;

import java.util.Random;

/**
 *  根据交通信号灯颜色决定汽车停车、行驶和慢行
 * @author Nirvana
 *
 */
public class Homework03 {
	public static void main(String[] args) {
		int random = new Random().nextInt(3);
		switch(TrafficLights.values()[random]) {
		case RED:
			System.out.println("STOP!");
			break;
		case YELLOW:
			System.out.println("WAIT!");
			break;
		case GREEN:
			System.out.println("GO!");
			break;
		
		}
	}
}

/**红绿灯*/
enum TrafficLights{
	RED,YELLOW,GREEN
}

你可能感兴趣的:(JAVA学习)