Java新手问题

软件和网站开发以及相关技术探讨
回复
antonym55
帖子: 353
注册时间: 2007-04-03 9:52
联系:

Java新手问题

#1

帖子 antonym55 » 2007-06-18 15:58

昨天翻了一下以前买的 Thinking in Java , 写了一个HelloWorld 如下

代码: 全选

public class Hello
{
    public static void main(String[] args)
    {
        System.out.println("Hello World");
    }
}
运行过程中发现几个问题
1. 刚开始时随便写了个1.java, 运行时提示Hello 是Public 的,文件名必须是Hello.java , 改了就OK了

问题:如果要在1个文件内写多个类,该用什么文件名? 是不是用main 所在的类的名字命名文件名就行了?
如果没有main呢?

2. class 前面有个public 的 是用在继承时,还是其它的情况?
试过将 Hello 前面的public 改为private, 结果运行就出问题了

3. 试过将main 前面的public 改为private 就会提示"Main method not public."
既然main是 Hello的成员,Hello 应该可以访问他的私有方法(method),
猜测 java 有种机制 先new 一个Hello 对象,然后再调用它的公共方法, 不知道猜测是否正确?

4. 如果将main 前面的static 去掉就会提示
Exception in thread "main" java.lang.NoSuchMethodError: main
为什么会这样呢?

请知道的朋友解答一下,谢谢!
附件
java.jpg
头像
seaway
帖子: 88
注册时间: 2006-06-27 16:37
来自: china
联系:

#2

帖子 seaway » 2007-06-20 12:29

运。。你确定你看过think in java了吗?你这些问题都非常初级,里面都有详细解释。
tjmacoo
帖子: 3
注册时间: 2007-06-21 9:34

#3

帖子 tjmacoo » 2007-06-21 10:21

就是啊,LZ的问题是不是有点太简单了?去看看书就会明白了
antonym55
帖子: 353
注册时间: 2007-04-03 9:52
联系:

#4

帖子 antonym55 » 2007-06-21 21:15

seaway 写了:运。。你确定你看过think in java了吗?你这些问题都非常初级,里面都有详细解释。
我直接看的第二章,目前只看到这里. 因为工作和影印版的关系,没有很多时间去看这本书。
tjmacoo 写了:就是啊,LZ的问题是不是有点太简单了?去看看书就会明白了
我说过是新手问题了呀。

我主要是用C/C++,因为有差异,所以想知道Java为什么要这样做,

比如第一个问题,很多程序设计语言并没严格规定源文件的名称,源文件只不过是代码的一个载体,
(不管你是用茶杯还是用茶壶这种载体,茶还是茶)

Java却有如此规定,刚开始接触的人难免会有疑问。
头像
anticlockwise
帖子: 2394
注册时间: 2007-03-01 20:46
来自: 湖南长沙

#5

帖子 anticlockwise » 2007-06-22 13:56

1. 对于Java而言,一个文件只能对应一个public类,文件中的其他类必须是private或者内部类(类内部的public static或者private)
2. class前面的public就是说明该类为公有类,也就是说该类在任何情况下都是可见的,并不只针对于继承,和C++不同的
3. Java中的main函数和C++中的一样,都是有特殊意义的,如果写成了private,那么说明main函数是某个类私有的,不公开,当然在运行时会找不到咯
4. main函数当然不是某个类特有的函数,而是整个程序的主入口,所以是静态方法咯,要加static
wjjleopard
帖子: 27
注册时间: 2007-06-25 2:13

#6

帖子 wjjleopard » 2007-06-27 21:42

这些问题应该到java论坛去问,别在这里阿
要是是配置问题还说得过去,皑皑
头像
JustinLei
帖子: 85
注册时间: 2005-09-20 14:29
来自: 弯弯的月亮

#7

帖子 JustinLei » 2007-06-27 22:42

1、一个文件只能有且只有一个public类,并且只能以这个public类名作为文件名,如果没有public类,那么文件名可以是任意的名字,如果不是public类,类可以是其他任何权限,包括默认权限(无修饰符),protected,private,以及内部类。
2、一个类只有被public和protected修饰并且没有final修饰才可以被继承,protected权限的类只能在一个包(package)里的类都可以调用。private修饰的类只能在当前文件的类被调用,内部private类只能被其外部类初始化并调用。内部public类可以在外部任何位置调用,权限继承其外部类。
3、main方法是被虚拟机调用。其他不可调用。JAVA只有一种初始化方式,就是new关键字,在堆中创建对象。
4、main方法必须是静态方法,因为main方法可以放在任何一个对象内部被虚拟机调用,假使main不是静态方法,那么main方法必须在类初始化后创建,在虚拟机调用main之间,对象不可能被初始化,所以必须是静态方法,静态方法在对象初始化之前就已经被创建(存在)。
回复