一、入门
1、下载和安装J2SDK <a href=http://java.sun.com/j2se/1.4.1/download.html>http://java.sun.com/j2se/1.4.1/download.html</a>
2 JAVA VM <a href=http://www.java.com/en/index.jsp>http://www.java.com/en/index.jsp</a>
3 API <a href=http://java.sun.com/api/index.html>http://java.sun.com/api/index.html</a>
1 首先下载J2SDK安装
a 更新PATH环境变量
为了能在任何目录下都能执行java命令(如javac、java、 等),需要将java的bin目录放入PATH环 境变量中。 对于Windows95/98, 打开“开始”菜单、选择“运行”、输入命令sysedit(调用系统配置编 辑程序),在C:\AUTOEXEC.BAT窗口中找到PATH设置并追加一项(c:\jdk1.3.1_01\bin)对于Windows NT and Windows 2000 ,进入“开始”菜单,选择“设置/控制面板/系统”。对于Windows NT,选择“环境” 页,对于Windows 2000,选择“高级”页,在环境变量设置中的用户变量栏中增加(如果原来没有PATH) 或修改PATH环境变量,使其包含c:\jdk1.3.1_01\bin路径。
b 更新CLASSPATH环境变量
为了使系统能找到用户定义的类,需要将用户类所在的目录(通常是当前目录即把 . 加入到 classpath中)放入CLASSPATH变量中。具体更改方法同PATH修改过程,只是要找到 CLASSPATH环境 变量进行修改。
jdk Win2000下的环境变量设置
在“我的电脑”的属性的高级选项当中有一个环境变量设置。
1)在系统环境变量PATH参数后面加上bin的访问路径。例如如果是直接安装在c盘下面的话就在PATH参数后面加入c:\jdk1.3.1\bin。加入后的结果一般为:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\jdk1.3.1\bin。
2)新建一个系统环境变量CLASSPATH,将其值赋为:.;c:\jdk1.3.1\lib\tools.jar;c:\jdk1.3.1\lib\dt.jar;c:\jdk1.3.1\jre\lib\dt.jar;d:\JavaProgramming\
其中d:\JavaProgramming\是Java源程序的存放目录。
注意:在使用java命令的时候后面跟随的源程序的名字中的大小写应该完全与源程序名字中的相同,也就是说Java命令是不忽略大小写的。另外,在Java命令后面的程序名不要带上.class!
c 确认系统安装
在DOS提示符下,输入set命令可以查看PATH和CLASSPATH的设置是否成功 ( 如果是98者需运行 AUTOEXEC.BAT才能使修改的设置生效 如果是2000需把dos关闭重新运行 )
2 然后运行你的第一个java程序
写个类保存为.java文件 一定记得如果是用记事本编辑器的话 保存时要选择保存类型为所有类型然后文件名字和你的类名字要一模一样 或者也可以把类名.java加上引号就可以避免保存为.java.txt的类型了
3 常见错误处理
如果运行javac命令时出现can not read xxx.java 首先看看你的文件是否保存为.java.txt的类型了(右点文件看属性里的扩张名) 重新保存 记得此时要把文件名.java加上引号 保存 。 若运行java命令时提示exception in thread "main" java.lang.NoClassDefFoundErroe:的异常 说明你的classpath里没有加入 .
2 exception in thread "main" java.lang.NoClassDefFoundErroe:
说明你的classpath里没有加入 .
3 "=="和"equals()"的区别在哪里?
"=="是java中固定的操作符,用来判断是否相等,用法比较单一
由于在java中除了基础类型(int,char,boolean等)其它都是对象,而用"=="来比较对象实际上就是在比较对象的句柄(也可以说是地址的比较),因此即使对象的内容是一样的用"=="判断也是不一样的
(除非:Object a =new Object()
Ojbect b = a;
if(a==b)
System.out.println("true");
在上述这个程序的情况下执行结果是打印出“true”)。
而equals()方法在Java中所有的对象都具有的,由于Java中的所有类都extends Object,所以个各类都可能对equals()方法重写(面向对象多态性的体现),因此equals()方法虽说也是比较两个对象,但由于各个类中的实现方法不一样,从而其比较的内容也不一样,就像楼上说的String 对象的equals()是用来比较字符串对象所包含的字符串值是否相等。
结论:==的用法比较单一,是一个固有的操作符
equals()方法是一个可以根据需要来比较两个对象的某些特征是否相等,用途很广
4 StringBuffer s1 = new StringBuffer("a");
StringBuffer s2 = new StringBuffer("a");
s1.equals(s2)//为什么是false
String s1 = new String("a");
String s2 = new String("a");
s1.equals(s2)//为什么是true
其实很简单,我来总结一下。
一、String的equals方法是覆盖Object的,所以String a=new String("ss");String b=new String("ss"); 生成了两个对象,但是a.equals(b)=true,比较的是值。
二、StringBuffer的equals方法没有覆盖Object的方法,所以StringBuffer a=new StringBuffer("ss");StringBuffer b=new StringBuffer("ss");,生成了两个对象,
a.equals(b)=false,比较的是地址。
三、等号比较的是地址,String a = "a";String b=a;只生成了一个对象a==b true。
StringBuffer a=new StringBuffer("a");StringBuffer b = a; 也是生成一个对象a==b true。
四、String a="ss";String b="ss"; a.equals(b)=true a==b true因为也是一个对象。这是因为编译时只产生了一个对象"ss"。String a=new String("ss");String b=new String("ss");a.equals(b)=true,没有疑问,a==b false。因为a,b是在运行时才产生的对象,产生了2个对象。
要点:编译对象和运行对象。
5. Java Web Start是什么?
看这里http://java.sun.com/products/jav ... s/Readme_zh_CN.html
6 trim()函数的用法
使用一个对象。如:
String aa;
aa=" aaaa ";
aa=aa.trim();
aa return "aaaa".
是去掉字符串的前部和后部的空格。
7 怎么提取系统时间?
Date myDate=new Date(System.currentTimeMillis());
//This time format is your local time format.
System.out.println(myDate.toString());
//Used the simple format to get the String you want .
//The valid string ,you can reference the JDK Doc
SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy/MM/DD HH:mm:ss");
System.out.println(sDateFormat.format(myDate));
使用Date和SimpleDateFormat 可以得到任何格式的时间,另外还有一个更强的类是Calendar,下面会有讨论。
9 日期的显示格式化
例子:
import java.util.*;
import java.text.*;
public class FormatDate {
public static void main(String[] args) {
Date now = new Date();
DateFormat defaultFormat = DateFormat.getDateInstance();
DateFormat shortFormat = DateFormat.getDateInstance(DateFormat.SHORT);
DateFormat mediumFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG);
DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL);
String defaultDate = defaultFormat.format(now);
String shortDate = shortFormat.format(now);
String mediumDate = mediumFormat.format(now);
String longDate = longFormat.format(now);
String fullDate = fullFormat.format(now);
System.out.println("(Default) Today :" + defaultDate);
System.out.println("(SHORT) Today : " + shortDate);
System.out.println("(MEDIUM) Today :" + mediumDate);
System.out.println("(LONG) Today : " + longDate);
System.out.println("(FULL) Today : " + fullDate);
}
}
运行结果为:
D:\javamail>java FormatDate
(Default) Today :2003-6-15
(SHORT) Today : 03-6-15
(MEDIUM) Today :2003-6-15
(LONG) Today : 2003年6月15日
(FULL) Today : 2003年6月15日 星期日
10 静态和非静态的嵌套类有什么区别?
static内部类意味:
1创建一个static内部类的对象,不需要一个外部类对象
2不能从一个static内部类的一个对象访问一个外部类对象
11 怎样判断输入的东东是字符还是数字啊?
用Float.parseFloat(String data)解析一下
有NumberFormatException抛出就不是数字了
如果你用StreamTokenizer的话,那里面有StreamTokenizer.ttype,可以判断是否是数字。
你也可以 Character.isDigit(char ch)来判断没一个字符是否是数字。
Character类的方法
static boolean isDigit(char ch)
Determines if the specified character is a digit.
static boolean isLetter(char ch)
Determines if the specified character is a letter.
static boolean isLetterOrDigit(char ch)
Determines if the specified character is a letter or digit.
static boolean isWhitespace(char ch)
Determines if the specified character is white space according to Java.
12 finalize()和System.gc()区别
finalize()是由JVM自动调用的,你可以用System.gc(),但JVM不一定会立刻执行,JVM感觉内存空间有限时,才会开始执行finalize(),至于新的对象创建个数和被收集个数不同是因为收集的对象只和JVM的垃圾收集策略有关,和你的chair()创建无关,finalize()只是chair()中的一个方法,不和chair()创建有关。
13 怎么键盘上输入2 ….竟印出50 ??? System.in.read()用法
import java.io.*;
public class test
{
public static void main(String[] args)throws IOException
{
int s[]=new int[10];
s[0]=System.in.read();//正确的应该改为s[0]=Integer.parseInt(args[0]);
System.out.println(s[0]);
}
}
打印出来的是键盘上字符对应的ASCII码值,比如你输入a,输出的就是97。另外:
Integer.parseInt(String) 是拿String来做参数,返回带符号的int型
而System.in.read() 则是返回0-255之间的整数,来表示ASCII 码,两者虽然都是int,但是意义不一样。 |