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

问题1:

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

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

代码如下:

Test.java

/一个简单的Applet程序
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet{
        
       public void  paint(Graphics g){
     g.drawString("Cao chufeng,nice to meet you!",
        50,60);
     g.drawRect(100,150,120,140);


        }


}

小应用程序代码书写和编译完成后,无法独立运行,需要一个载体或者容器。下面的HTML网页代码就是小应用程序载入的容器。

Test.html

<html>
 <head>
<title> 一个简单的Applet程序</title>

</head>

<body>
<applet Code = "Test.class", Width ="600",
 Height ="500">
</applet> 
</body>

</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例编译却能通过的原因。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券