Java基础知识点总结(二)

来源:互联网 发布:赛尔网络创新大赛 编辑:程序博客网 时间:2024/04/29 11:43

1.引用传递
三种引用传递(本质是值传递,传递的是引用地址值的副本)
第一种:
内存分析:

第二种:

内存分析:

第三种:

内存分析:

2.关于内存的存放位置:
类变量:类变量是定义在类中(而不是方法中)并且有static 修饰的变量
因为是静态的,所以是在方法区中的
成员变量:成员变量是定义在类中,但是没有static 修饰的变量
实际的值是存放在堆内存中的
局部变量:定义在方法中的变量,一般是存放在栈内存中的
3.this关键字
(1)表示类中的属性
(2)调用本类的构造方法
(3)this表示当前对象,当前对象:当前正在调用方法的对象
需要注意的是:
如果使用this调用本类中其他构造方法的话,此语句必须放在构造方法的首行
一个类中如果有多个构造方法,则肯定有一个是不用this调用的
一个类中如果存在个构造方法的时候,参数少的构造方法放在面,参数多的构造方法放在最后面。  
4.static声明的属性或方法也称为类方法,可以用类名称直接调用
static方法不能调用非static属性和方法,因为static属性在没事有实例化时就已经加载了,而非static属性和方法依赖对象的创建
5.主方法
方法:是所有调用的定义如
public static void main(String args[])
际上一个饰符或参数都是有意义的:
·public:表示外部都可以访问
·static:方法可以由类直接调
·void程序,一旦开始了就没头路
·main统规定好的默认的方法名称
·String args[]:是一个字符串数组,用于接收参数
在主方法中,可以在一个程序运行时输入个参数个参数之间使用空格,所有的参数String args[]进行
收。  
在主方法中只能调用静态方法:如下:
public class StaticDemo{
    public static void main(String[] args){
        fun();
    }
    public static void fun(){
        System.out.println("Hello World");
    }
}
如果不写成static方法,则可以按照对象调用方式调用:如:
public class StaticDemo{
    public static void main(String[] args){
        new StaticDemo().fun();
    }
    public void fun(){
        System.out.println("Hello World");
    }
}
6.代码块
代码块分为:普通代码块、构造块、静态代码块、同步代码块
普通代码块:定义在方法的代码块
构造块:定义在类中的代码块
静态代码块:使用static关键字声明的代码块
注意:
(1)构造块先于构造方法执行,且执行多次,只要有实例化对象产生,就会执行构造块中的内容
(2)在主方法所在类中定义的静态代码块先于主方法执行,普通方法所在类中静态代码块先于构造块和构造方法执行,无论有多少实例化对象产生,静态代码块只执行一次
(3)静态代码块的主要功能是静态属性的初始化
7.对象数组
不管基本数据类型还是引用数据类型都可以使用数组的格式进行声明并使用
数组格式:数据类型 数组名称[] = new 数据类型[长度]
数组要开辟内存空间,引用数据类型数组的每一个对象都是null值,所以需要对每一个对象进行实例化操作
eg:
Person per[] = new  Person[3];    //开辟空间
per[0] = new Person("zhangsan");
per[1] = new Person("dasd");
per[2] = new Person("dwae");
main方法中的  String[] args 也是对象数组
8.static声明的内部类可以看成一个外部类,操作时使用“外部类.内部类”形式访问
9.继承的主要目的是为了扩展类的功能
Java中一个子类只能继承一个父类
java中不允许多继承,即一个孩子有好几个父亲,但允许多层继承,即一个孩子可以有一个父亲,这个父亲还可以有父亲
子类不能访问父类中的私有属性和方法
子类对象在实例化时必须首先调用父类的构造方法之后再调用子类自己的构造方法,即实际上,子类的构造方法中隐藏了一个“super()”语句
在方法覆写时需要考虑权限,子类覆写的方法的权限不能拥有比父类方法更加严格的访问权限
10.方法的重载与覆写的区别

11.final
final关键字声明的类不能有子类;太监类
使用final声明的方法不能被子类所覆写
使用final生命的变量是常量,不能修改
12.抽象类
包含一个抽象方法的类称为抽象类,抽象类需要用abstract关键字声明
抽象方法:只声明没实现的方法就是抽象方法,即没有方法体的方法,抽象方法必须使用abstract关键字声明
注意:
抽象类必须被子类继承,子类必须覆写抽象类的所有抽象方法,否则该子类还是抽象类,需要用abstract关键字声明
抽象类不能用final声明,因为final声明的类不能被继承,这样矛盾了
抽象类中可以定义构造方法,虽然不能直接创建抽象类的对象,但是子类在实例化时,会实例化父类,会调用抽象类中的构造方法
13.接口
接口可以理解为特殊的抽象类,由全局常量和公共的抽象方法组成
interface 接口名称{
    全局常量;
    抽象方法;
}
注意:
子类通过implements关键字实现接口,接口也必须有子类,且子类要覆写所有抽象方法
一个子类可以同时实现多个接口,非抽象子类必须覆写接口的全部抽象方法
一个子类可以同时继承抽象类和实现接口,但是一定要先继承后实现
 一个接口虽然不能继承抽象类,但是一个接口可以同时继承多个接口,实现接口的多继承
一个类可以实现多个接口一个接口不能继承类
eg:
interface C extends 父类接口 A,父类接口B{}
14.instanceof用于判断一个对象是否是某个类的实例,在向下转型之前最好使用instanceof关键字验证
15.Obeject类是所有类的父类
Object类的主要方法:

对象在打印时一定会调用toString()方法,是默认调用的
Object类是所有类的父类,只要是引用数据类型都可以用Obejcet进行接收
16.包装类
Java中一切皆对象,但基本数据类型不是类,所以有了包装类的概念


17.throws关键字是用在方声明上,表示一个方不处理异常,而交给被调用处进处理,throws关键字不可以在的方上使用,可以使,如果上使用的话就表示旦出异常之,继表示由JVM处理
18.throw关键字是在程序中为的一个异常对象。
eg:
public class ExpDemo09 {
    public static void main(String args[]) {
        try{
            throw new Exception("抛着玩!") ;
        }catch(Exception e){
            e.printStackTrace() ;
        }
    }
};  
18.RuntimeException及其子类异常不需要处理
19.包的定义及导入
package是在使用多个类和接口时,为了避免名称重复而采用的一种措施
(1)定义格式:
package 包名称.子包名称;
包实际上就是一个文件夹,在编译时需要加上参数。
javac -d . 类名.java
(2)包的导入
import 包名称.子包名称.类名称;    //手工导入包
import 包名称.子包名称.*;    //JVM自动加载所需要的类
其实这两种方法没有优虐性可言
编译时需要先编译要导入的类,再编译要执行的类
20.如果一个类在本包中访问,不需要外包访问,则直接声明成class即可,,如果一个类需要被外包访问,则必须声明为public class
21.如果不同包中有相同类,则调用时写上完整的“包名.类名称”
22.静态导入
如果一个类中全部是static定义的静态方法,则在导入时可以直接使用“import static 包.类。*”
使用时可以直接调用方法
23.打包
用jar命令:
jar -cvf my.jar 包名;
C:创建新的文档
V:生成详细的输出信息
F:指定存档的文件名
如果要使用jar包,则必须配置classpath路径
set classpath = .;d:\packagedemo\my.jar;
24.访问控制权限
0 0
原创粉丝点击