2017年8月23日

时间:2021-01-01 14:13:24

杂谈:心情很低落,可是依然要坚持学习,希望自己能不被其他因素所影响,希望真的能越来越好

-----------------------------------------------------------------------------------------------------------------

public class Sample{

   long length;

   public Sample(long l){ length=l;}

   public static void main(String arg[])

  {

      Sample s1,s2,s3;

     s1=new Sample(21L);

     s2=new Sample(21L);

     s3=s2;

   }

}

A. s1==s2;

B. s2.equals(s3)

C. s1.equals(s2)

D. s2!=s3;

 

A答案s1和s2比较的是引用地址,因为都是new出来的不同地址,所以为false

B答案 因为s3的赋值为s2,那么s2和s3指向的是同一个东西,所以为true

C答案 这个要重点看,这个类没有返回值,s1和s2是Sample的对象,equals方法也没有重写,没有办法具体比较,所以为false

D答案 同B答案原理

 

 

public class test{

  public static void main(String args[]) {

     String s1 = "hello";
    if (s1 == "hello") {
   System.out.println("s1 = \"hello\"");
  } else {
   System.out.println("s1 !=hello");

}

}
}

 

A.输出 s1 !=hello

B.输出 s1="hello"

C. 编译正确,运行错误

D. 产生编译错误 

此题s1=="hello",那么在"s1 = \"hello\"" 中其实是使用了转义字符,hello前后的2个 \" 相当于 " (双引号),其实就等同于"s1 = "hello" "

那么最后输出的就是 s1="hello"

 

JAVA中转义字符: 

1.八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377' 
      \0:空字符 
2.Unicode转义字符:\u + 四个十六进制数字;0~65535 
     \u0000:空字符 
3.特殊字符:就3个 
      \":双引号 
     \':单引号 
     \\:反斜线 
4.控制字符:5个 

\' 单引号字符 

\\ 反斜杠字符 

\r 回车 

\n 换行 

\f 走纸换页 

\t 横向跳格 

\b 退格 

点的转义:. ==> u002E 
美元符号的转义:$ ==> u0024 
乘方符号的转义:^ ==> u005E 
左大括号的转义:{ ==> u007B 
左方括号的转义:[ ==> u005B 
左圆括号的转义:( ==> u0028 
竖线的转义:| ==> u007C 
右圆括号的转义:) ==> u0029 
星号的转义:* ==> u002A 
加号的转义:+ ==> u002B 
问号的转义:? ==> u003F 
反斜杠的转义: ==> u005C 



 

类Teacher和Student是类Person的子类:

Person p;

Teacher t;

Student s;

//p,t and s are all non-null.

if(t instanceof Person)  {s=(Student)t;}

最后一句语句的结果是:

A. 编译时正确,但运行时错误

B. 将构造一个Student对象

C. 表达式是错误的

D. 表达式是合法的

2017年8月23日

  t不能强转为S,student和teacher没有继承关系,这种在表达式上直接就报错