Java本身知识点非常多,长沙软件培训在这里不做全面论述,仅做为一个引子,以增进理解和记忆,欢迎各位朋友与我进行探讨,共同进步。
Java基础知识总结(一)
1、 import关键字
(1)import语句必须定义在所有的class定义之前。
(2)import语句只是为编译器指明了一个路径,并不像C或C++中的#include,所以用import .*并不影响性能
2、Java中的类名与文件名
(1)、在一个java文件中可以有多于一个类定义(更常见于某些组件的监听器类),但只能有一个
public class定义,且与文件同名。
(2)、如果一个java源文件中没有public类,那么每个类的名字没特殊规则,即不必与文件同名。
(3)、在编译后产生的class文件中,仍旧是多个单独分开的class文件。
3、关于java类中的缺省的构造器
如果一个java类没有显式定义没有参数的构造器,将有一个默认缺省的构造器。如果定义了一个有参数
的构造器,那么原来的缺省的构造器将不在有效。
public class A{
}
此时如果用 new A(); java编译器将使用缺省的构造器。
public class A{
public A(int i){
}
}
如果此时用 new A(); 将产生一个编译错误,因为此时显式定义了,一个有参数的构造器。
4、java方法中的传递值参
在Java方法中传递参数,对于基本类型来讲传递的是值参数,相当于建立的一个参数的拷贝,不影响原来变量的值。
在引用方法中可以改变传递对象的内容,但对象引用(像[email protected])从来不会改变。
public class tt{
public static void main (String args[]){
A aa = new A();
aa.num =5;
tt t = new tt();
System.out.println("11 aa="+aa + "num="+aa.num);
t.test(aa);
System.out.println("22 aa="+aa + "num="+aa.num);
}
void test(A a){
A ab = new A();
a = ab;
System.out.println("33 ab="+ab + "num="+ab.num);
}
}
class A{
int num;
}
5、Java中的几个特殊关键字
Java中的关键字许多大家都比较熟悉,而有几个就不是很常用,如:
(1)、goto和const是保留关键字,在java中没使用
(2)、strictfp和volatile不常用; sizeof、zhen不是关键字。
(3)、true,false,null不是严格意义上的关键字,而是literals。
6、变量初始化
java中的变量在使用之前必须被初始化,当创建一个对象的时候一些类的变量会自动初始化并赋予缺省值。
数字类赋值0;char类型赋值‘\u0000‘; boolean类型赋值false;引用对象赋值null;
注意的是在方法之外的类变量的值是自动赋初始值,而方法内的局部变量必须手工初始化。
class AA{
int num;
void test(){
int j;
j =5;//没有这一行则编译不会通过。
j = j+num;
}
}
7、switch语句
这个点经常在求职笔试题目中出现。default放在最上边编译没问题;碰到符合分支的,如果没有break
会一直向下运行。
public class tt{
public static void main (String args[]){
tt t = new tt();
t.test(2);//可改变成3运行一下看一下结果
}
void test(int i){
switch (i){
default:
System.out.println("default");
case 1:
System.out.println("111");
break;
case 2:
System.out.println("222");
break;
}
}
}
8、类型转换校正
class Employee
class Manager
向上校正,总是允许的,Manager直接使用父类Employee的方法。
向下校正,必须用instanceof检验,才能将一个Employee转换为Manager对象。
public void test(Employee e){
if (e instanceof Manager){
Manager m = (Mnager)e;
...
}
}
9、关于java中的label使用
· break [label]
· continue[lbele]
· lable: statement; //这里的statement必须是一个loop循环
public class tt{
public static void main (String args[]){
tt t = new tt();
t.test();
}
void test(){
System.out.println("0000");
lb1:for (int i=0;i<10;i++){
lb2:for (int j=0; j<2; j++){
if (i==2) continue lb1;
System.out.println("i="+i +" j="+j);
}
}
System.out.println("111111");
}
}
10、方法重载(overloading)、方法覆盖(overriding)
方法重载(overloading)一定要求名字相同,参数不同,返回类型可以相同也可以不同
class A{
void test(int i){
}
}
class AA extends A{
int test(int i, int j){
return 5;
}
}
注:方法覆盖(overriding)要求名字,参数,返回类型全部必须相同,访问控制符可以不同,但必须大过父类的。因为如果名字和参数都已经相同了则一定要求返回类型相同,否则认为这是一个新的方法了,名字就必须不同了。
class A{
void test(int i){
}
}
class AA extends A{
public void test(int i){//若是换成private则编译不通过。
}
}
注:关于覆盖方法抛出异常的问题。如A是父类,B是继承A的子类。B中的方法meth()去覆盖父类A的此方法时,B中不能throws出新的异常,只能是父类抛出的异常或其子集。更甚至可以不抛出异常。
文章整理自长沙软件培训http://www.cshope.net/
长沙软件培训:Java基础知识总结(一)