类:就像是一个模板,比如要统计学生的成绩,要写学生的姓名,性别,成绩等,而这些就是一个模板,然后就要将学生这些对象对应的信息填进去,所以对象就是由类产生的
内存:就是存储对象的信息的,可以将内存比作许多个房间,而数据的类型决定了数据要用几个房间存储信息,一个房间就像是byte,一个房间分为了8个部分,每一个部分的单位就是bit
数据成员
访问限制的修饰有:public protect friendly private
public 修饰的数据成员和函数是对所有用户开放的,所有用户可以直接调用
protect 本类,子类(继承)还有同一包路径下的是可以直接调用的
friendly 本类和同一包路径下可以直接使用
private 只可以在本类中使用,是私有的
private int x;
数据前面也可以没有修饰的,即为默认的
非访问限制的修饰
静态变量(类变量):static 类型 变量名 初始化
静态变量只有一个值,是公用的,而且是始终存在,如果某一个对象将他的值改变了,则其他对象再调用他的值的时候就会得到改变后的值,但是也只能在定义该变量的函数内使用,子类也不能覆盖父类的方法。对静态变量要赋初值,如果没有赋初值,则系统会自动赋值,数据变量自动赋0,字符型变量赋空字符null(null是根本不存在的,系统没有为其分配内存,调用null时会抛出空指针异常,空指针是指指向空地址的指针;而0和 “” 是有内存的)
实例变量:就是没有static 修饰的变量,每次使用实例变量都要将其 实例化
不同:系统只会为静态变量分配一次内存,而对于实例变量,每创建一个实例,系统就会为实例变量分配一次内存,之间互不干扰;静态变量可以直接用类名引用,而实例变量必须要创建对象后通过对象才能使用,系统才会给他分配空间
Final变量:经常和static一起使用,作为常量。一旦定义就不能被改变
注:每有一个class尽量就新建一个文件
数据类型为一个类,所以第一个字母为小写 而String是一个类,所以第一个字母为大写
每一类都有一个函数,没有写就是默认的不带任何参数的函数,自然也不会被调用
This.x 一旦创建一个实例对象,虚拟机就会为该对象创建一个默认的指向自己的指针,指的是最初创建的 那个参数,而不是函数中的那个形式参数
super 关键字表示父类的意思,类似一个指针指向父类的对象,所调用的方法就是子类继承父类的方法
类的修饰
访问权限修饰符
即修饰class的,有public,某个类前面也可以没有修饰,这样的类只能被同一个包中的类使用
非访问权限修饰符
抽象类修饰符:abstract 修饰抽象类,是用来被其他类继承的,但不能用new创建对象
终结类修饰符:Final 被final修饰的类不能被继承,所以一个类不能同时被abstract和final修饰
方法成员包括静态方法(类方法)和实例方法
静态方法:有static 其他类如果要使用他,可以通过类名直接调用。在类方法中不能使用this和super,也不 能调用实例方法,因为他们指向的是父类和本类的对象,而类方法在调用的时候这些对象可能还没有被创建;只能调用本类的方法,静态方法不能被覆盖
实例方法:无static 只有当对象被创建后才会分配空间,而且只被他创建的对象所使用;可以调用类方法和实例方法;可以被覆盖
其修饰有public,默认访问,protect,Private,abstract,static,
final:修饰的方法为最终方法,就是不能被重新定义
native:修饰的方法为本地方法,通常用其他语言方法书写方法体,实现方法功能
synchronized:可以修饰代码块也可以修饰方法,甲使用时,乙不能使用,必需等待甲使用完才可以
throwable:是所有错误类和异常类的父类,该类的异常对象只能用JVM抛出或通过throw声明抛出
注:JAVA中的引用变量相当于C语言中的指针,他的作用是指向某个对象的,传输的是地址;而常量传输的是数据