7.26 (1)


1 URL(Uniform Resource Locator) 统一资源定位符,能够对因特网的资源进行定位。
URL一般有四部分组成: <协议>://<主机>:<端口>/<路径> 

现在最常用的<协议>为http协议。
<主机>是指主机在因特网上的域名。ip地址+子网掩码=主机号
http协议的默认<端口>为80(可以省略)。
<路径>是指要活的的文件的路径。
2 下列哪种情况可以终止当前线程的运行?
当一个优先级高的线程进入就绪状态时
当该线程调用sleep()方法时
当创建一个新线程
抛出一个异常时
答案:D
优先级高的并不一定会马上执行。
sleep方法会阻塞一个线程并不会终止
创建一个新的线程时也不会终止另一个线程
当抛出一个异常后程序会结束,所以线程也会被终止
 
要想答对这道题,要区分“终止” 和 “阻塞”:
  • 终止:这个线程不会在进入“就绪态”,宣告死亡,即“死亡状态”。
  • 阻塞:进入阻塞态的线程还可以再进入“就绪态”,等待下一次 CPU 时间。
然后是对线程的 5 个状态的理解:
1. 新建,刚刚新建的线程,还未进入就绪队列
2. 就绪,进入就绪队列的线程拥有了获得 CPU 时间的机会,但不是一定会马上执行,与线程调度有关。
3. 运行,获得了 CPU 时间,正在被执行的线程。
4. 阻塞,进入阻塞状态的线程只是暂时失去了 CPU 时间,该类线程没有结束,“阻塞态”的线程只能进入到“就绪态”。
5. 死亡,死亡的线程即彻底结束了。
 
下面总结下使一个线程进入阻塞状态的方法:
1. sleep() / suspend()
2. 发生IO阻塞
3. 等待同步锁
4. 等待通知
 
解除一个线程的阻塞状态,使之进入就绪态的方法
1. sleep() 指定的睡眠时间到了
2. IO阻塞解除
3. 获得同步锁
4. 收到通知
5. 调用了 suspend() 的线程阻塞后,再调用 resume() 解除阻塞
 
3 @SuppressWarnings(“deprecation”)的功能是什么?  屏蔽不赞同使用的类和方法的警告
1.Java三大注解分别是@Override @Deprecated @Suppresswarnings
2.@Override 注解表名 子类中覆盖了超类中的某个方法,如果写错了覆盖形式,编译器会报错
3.@Deprecated 表明不希望别人在以后使用这个类,方法,变量等等
4.@Suppresswarnings 达到抑制编译器产生警告的目的,但是不建议使用,因为后期编码人员看不懂编译器提示的警告,不能更好的选择更好的类去完成任务
 

4 下列不正确的 Java 语言标识符是( )

Sky       $Computer       for       NULL

Java标识符命名规范是:
1)只能包含字母a-zA-Z,数字0-9下划线_和美元符号$
2)首字母不能为数字
3)关键字和保留字不能作为标识符。
null是关键字,NULL不是关键字,java区分大小写。这题答案D是对的,但C是错的,for是关键字。
 
5以下Java程序运行的结果是:
1
2
3
4
5
6
7
8
9
10
11
12
public class Tester{
public static void main(String[] args){
   Integer var1=new Integer(1);
   Integer var2=var1;
   doSomething(var2);
   System.out.print(var1.intValue());
   System.out.print(var1==var2);
}
public static void doSomething(Integer integer){
    integer=new Integer(2);
    }
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
主要分析下doSomething(),引用传递指的是传递的时候,传递的是对象的引用,而不是传递的对象本身。
因为这里传递的是引用,而不是地址值,即新建了一个Integer integer,其指向var2所指向的那个栈中的1.至此,integer和var毫无关系,除了同时指向同一个栈中的值。然后integer = new Integer(2);便是在栈中新建了一个为2的值,然后integer重新指向了这个栈中的值。所以var1和var2都没有改变,都是指向栈中为1的那个值。 
同时说明下: == 与equal 
equal是内容的比较 
==是引用的比较 ,也就是地址的比较
 
6 在jdk1.5之后,下列 java 程序输出结果为______。
1
2
3
4
int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));
 
 
 
 
 
 
 本题是一个自动拆装箱的考题(自动拆装箱JDK需在1.5上),下面的讨论都不针对新开辟对象的情况:
1、基本型基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;
2、两个Integer类型进行“==”比较,如果其值在-128至127,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关,这里不进行赘述。
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true
4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。
 

猜你喜欢

转载自www.cnblogs.com/shareidea94/p/11252599.html