A.int是基本数据类型,Integer是int的包装类,是引用数据类型
B.int的默认值是0,Integer的默认值也是0
C.Integer可以封装了属性和方法提供更多的功能
D.Integer i=5;该语句在JDK1.5之后可以正确执行,使用了自动拆箱功能
(解析B:int的默认值是0,integer是对象,默认值是null)
(解析D:这里使用了自动装箱的功能)
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方法是生成一个新的字符串,不是修改原字符串)
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是错误的)
A.isFile( )
B.getFile( )
C.isDirectory( )
D.getPath( )
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
(解析直接注释在代码中了)
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()方法实现的,而自动拆箱过程是通过调用包装类的
http://www.sxt.cn/Java_jQuery_in_action/eight-buffebuild.html
String:不可变字符序列。
StringBuffer:可变字符序列,并且线程安全,但是效率低。
StringBuilder:可变字符序列,线程不安全,但是效率高(一般用它)。
String str=”bjsxt”中的str是常量对象
String str= new String(“bjsxt”)中的str是String对象
mkdir:目录结构中有一个不存在,则不会创建整个目录树
mkdirs:目录结构中有一个不存在也没关系;创建整个目录树
https://blog.csdn.net/qq_34834846/article/details/81624361
提示:使用字符串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);
}
}
提示:使用包装类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+"日");
}
}
提示:使用枚举实现
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
}