最近学习java遇到的几个疑问

问题1:

1.问Java中如何运行Applet小程序(它没有主方法的)?

比方有如下的一个Apllet小程序

代码如下:

Test.java

 

小应用程序代码书写和编译完成后,无法独立运行,需要一个载体或者容器。下面的HTML网页代码就是小应用程序载入的容器。
Test.html
运行方法如下:
首先编写一个网页文件,如Test.html,这个文件代码如下:
<applet code="Test.class" width=800 height=600 >
</applet>
注意这个Test应该和你的JAVA源代码中的主类保持一致,即就是你得源代码为Test.java;
打开运行->cmd->,用cd 命令进入你得文件目录,
javac Test.java  //编译
appletviewer Test.html//运行
问题2:
Java最基本的面试题求解
问下面程序的输出结果
public class //此部分省略
public void main(String[] args){
      int i = 0;
      i =  i++;
System.out.println(i);
}
输出结果为0,i= i++;是将i++这个表达式的值0赋值给i。
以下程序错误的是(A)
A. short s = 1; s = s + 1;
B.  short s = 1; s += 1;
知道的请写出详细原因,  里面的s=s+1和s+=1有什么区别?
答:隐式类型转换可以从小到大自动转,即byte->short->int->long如果反过来会丢失精度,必须进行显示类型转换
  而s+=1的意思与s = s+1不同,s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int,编译器不会自动进行了隐式类型转换
  所以将一个int类型赋给short就会出错,而s+=1不同由于是+=操作符,在解析时候s+=1就等价于s = (short)(s+1),翻番来讲就是
  s+=1 <=> s =  (s的类型)(s+1)
1例中的 ' 1 ‘为int类型,不会自动转换为short型 ,这样可以:s=(short)(s+1);但可能会损失精度
 
而简单赋值运算和复合赋值运算的最大差别就在于:复合赋值运算符会自动地将运算结果转型为其左操作数的类型!   
这就是1例编译不通过,2例编译却能通过的原因。
posted @ 2010-08-22 09:54  雪域迷影  阅读(90)  评论(0编辑  收藏  举报