jre与jdk的区别:
jre是java的运行环境,java虚拟机就在其中
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
jdk是java开发的工具java development kit,针对开发人员发布的工具包!其中包括的组建如:
javac: java编译器(将java源程序转换成java字节码)
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java –运行工具, 运行编译后的java程序(.class后缀的),这不就是JVM吗?不是在jre中?
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器
总结:如果你只需要运行Java程序或Applet,下载并安装它即可。如果你要自行开发 Java软件,请下载JDK(JRE和JDK的区别)。在JDK中附带有JRE。注意由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行 Applet,务必安装一个JRE或JDK。
在网页中运行Java程序称为applet。
JRE自带的基础类库主要是JRE\lib\rt.jar这个文件 .
搭建java开发环境:即安装Java开发工具JDK
___________________________________
熟悉Java程序格式:1,大小写敏感 ,如:static void main(String args[]), System.out.println();
疑问:main必须加public?\
1 public class Test {
2 static void main(String args[]) {
3 System.out.println("hello, java!");
4 }
5 }
Error: Main method not found in class Test, please define the main method as:
public static void main(String[] args)
main函数解析:
格式:public static void main(String[] args)
1.public 用来告诉其它类这个方法是公用的,能被其它类访问!
2. static 说明这个方法是静态的,即在定义类的时候就存在了!不需要实例化就能访问!
3.void 返回值为空(与构造函数的无返回值不同)
4.String[] args 程序初始化参数
问:如果不加public,可以吗?
main函数是程序的入口,应该是有JVM来调用,所以main函数必须是能被外部所访问的!
问: 为什么声明成static类型的?
非static类型的方法是“对象名.方法名”来调用的,但是此时程序还没跑起来,没有实例化对象,所以要声明成static类型,通过"类名.方法名"直接调用!
补充:可以用int代替void吗?
不可以,否则报错 Main method must return a value of type void in class Hello, please
define the main method as:
public static void main(String[] args)
为什么?
返回值的作用之:判断程序是否正确运行或返回结果。。
JVM调用指定的类(与文件名相同)的main方法!传递给main一个字符串数组参数,使指定的类被装载,同时链接该类所使用的其它的类型,并且初始化它们。
范例参见:java中main函数解析(链接)
public class HelloApp {
public static void main(String[] args) {
System.out.println("Hello World!");
for (int i = 0; i < args.length; i++) {
System.out.println(args);
}
}
}
问:length在java中是属性还是方法?
a.length属性是针对Java中的数组来说的,要求数组的长度可以用其length属性;
b.length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
c.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!
这个例子来演示这两个方法和一个属性的用法
//import java.util.*;
public class One {
public static void main(String[] args) {
String[] list = {"xxx", "yyyiii", "zzzzhh"};
String a = "xxxyyyiiizzzzhh";
System.out.println(list.length);
System.out.println(a.length());
List<String> arr = new ArrayList<String>();
arr.add(a);
System.out.println(arr.size());
}
}
一开始是这样写的,List arr = new ArrayList(); 也没有import;
结果报错:
One.java:9: error: cannot find symbol
List arr = new ArrayList();
^
symbol: class List
location: class One
One.java:9: error: cannot find symbol
List arr = new ArrayList();
^
symbol: class ArrayList
location: class One
2 errors
难道是找不到List的声明,于是加上Import,重新编译,报警告:uses unchecked or unsafe operations(使用未选中或不安全的操作)!
但能运行出结果!
又查List的用法,加上元素类型String后就没有警告了!
补充:《Java核心编程》
Java的类与C++的类很相似,但还是有些差异会使人感到困惑。例如,Java中的所有函数都属于某个类的方法(标准术语将其称为方法,而不是成员函数)。
因此,Java中的main方法必须有一个外壳类。读者有可能对C++中的静态成员函数(static member functions)十分熟悉。
这些成员函数定义在类的内部,并且不对对象进行操作。Java中的main方法必须是静态的。
最后,与C/C++一样,关键字void表示这个方法没有返回值,所不同的是main方法没有给操作系统返回“退出代码”。
如果main方法正常退出,那么Java应用程序的退出代码为0,表示成功地运行了程序。
如果希望在终止程序时返回其他的代码,那就需要调用System.exit方法。
java的三种注释方法:a. // b. /* */ c. /** */这种注释可以自动生成文档!
在Java中,char类型用UTF-16编码描述一个代码单元。
我们强烈建议不要在程序中使用char类型,除非确实需要对UTF-16代码单元进行操作。最
好将需要处理的字符串用抽象数据类型表示(有关这方面的内容将在稍后讨论)。
C和C++区分变量的声明与定义。例如:是定义一个变量,而是声明一个变量。在Java中,不区分变量的声明与定义。
在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字static final设置一个类常量。