java基础笔记1

4 篇文章 0 订阅
***接口和抽象类的区别***
抽象类:它当中可以有抽象方法,就是只有方法声明,没有方法体,使用abstract修饰,用来被其子类重写.也有非抽象方法,有方法的实现.因为有时候你需要在父类实现某些方法,而不是在子类中,就要用到抽象类.

简单来说,
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

还有,接口可以实现多重继承,而一个类只能继承一个超类(包括抽象类),但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.
instanceof 运算符可以用来决定某对象的类是否实现了接口。
*****环境变量**********
环境变量的配置是为了可以任何目录(如非安装目录下)下运行程序,windows环境变量名不区分大小写.
path和classpath的区别:
path是您用的操作系统提供的环境变量,您一定试过在命令行输入一个命令然后它就执行了,你输入的比如说是〉abc,可这个文件明明在D:/****/***/abc.exe那个路径下,在命令行中,不管在那个路径下输入都能执行呢,这就是因为,再path中设置了这个路径。
path中只能设置.exe文件(上一级目录。如D:/****/***)其它后缀的文件不行(任何。如.rar,.word.txt等等)。

classpath有什么作用呢?classpath说明你的程序中引用的类所在的路径,主要为java jvm跨平台提供方便,编java程序的时候都知道import的作用,当要用的class,在某一个.jar下是,你需要在编译时引入,jvm自动去找classpath环境变量引入下面的jar包,这就是classpath环境变量的作用.

**********内存***********
*静态变量即类变量在程序运行时首先进内存、
声明一个引用变量时,系统只为该变量分配了引用空间,即在栈内存中开辟空间(如String str1),当用new为对象分配空间后(str1=new String()),将对象分配空间后,将对象的引用赋值给引用变量(栈内存中).即在堆内存中创建一个具体对象.引用既是堆内存对象的首地址.

*******类和对象********
类的首字母大写,方法、域(成员变量)的首字母小写(构造方法除外),均遵循驼峰原则。如:类名:AllTheColor  方法、域:allTheColor
1.javap.exe 用来反编译Java字节码,显示出成员变量和方法。使用方法:javap javaname
2.new关键字的作用:为对象分配内存、引起对象构造方法的调用、为对象返回一个引用。      
3.缺省构造方法初始化对象时,系统默认初始化对象成员变量。
数据类型的默认值是:数值型为:0
                    boolean: false
                    char :  '\0'
                    对象 : null


4.*****方法的重载 method overload*******
方法的重载发生在同一个类中,方法的名称相同,但参数类型或参数个数不同,才能构成方法重载。
也以返回值区分方法的重载(大多时不可行),如:void f(){}/int f(){},但仅在类似于int x=f()中可以用。
                              


5.构造方法construct method:——初始化initialization和清除cleanup
用来对对象进行初始化,一个类至少有一个构造方法、注意构造方法名必须和类名相同,且没有返回值。
  构造方法只能通过构造方法来调用、

6.*******this变量*********
构造方法的形参和实参名字避免相同,如果相同则需使用this变量(即指向其变量本身);如:this.x=x;//其中的x分别属于类和方法。
this 还可以用来简化构造函数的调用、
  ******super变量********
提供了对父类的访问,可以用来访问在子类中被覆盖的父类方法和变量。
每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有这种形式的构造函数,编译时就会出错。

7.关键字static
静态方法即用static修饰的是类方法,只属于类本身,可以用类名直接访问,如:classname.静态方法名();
 *静态方法和静态变量是属于一个类,而不属于类的对象,可以通过类的对象调用,也可直接通过类名调用、
 *同一类中,在静态方法中不能调用非静态的方法和引用非静态的的成员变量。反之,则可以、
 *mian方法前必须用static修饰,即可以直接通过类进入主方法mian。
 *不是静态方法的则是实例方法,须通过对象来访问。
  静态变量和实例变量与上类似。
8.关键字final
*可以用来定义常量,声明的同时应该进行初始化(但也可以在定义非静态常量时,在构造函数中进行初始化),如final int PI=3.14;其中常量用大写。
*通常用静态的常量以节省内存。如:static final int PI=3.14;


9.**********类的继承***********
关键字extends
用法:class 子类 extends 父类
*java中子承只能继承一个父类、
*方法的覆盖override:
在子类中定义一个与父类同名、返回类型、参数类型均形同的一个方法,称为方法的覆盖,覆盖发生在父子类之间。
***特殊变量super:
提供了对父类的访问,可以用来访问在子类中被覆盖的父类方法和变量。
每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有这种形式的构造函数,编译时就会出错。
*多态性:
运行时的多态:通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法、
编译的的多态:方法的重载。
*判断a是否是b的实例:instanceof
e.g: fish fh=new fish();
      if(fh instanceof fish){
       System.out.println("fh is fish's instanceof");
      }

10.package:包
包的使用: package  packagename; 在第一句。
执行包中的类: java packagename.classname 使用.;来指明目录层次。
package语句必须是文件的第一条语句、如果不加package语句则指定为缺省包或无名包、
包对应文件系统的目录层次结构。

**javac -d
(1)可以指定class文件生成位置、默认在当前目录、如直接用javac,或javac -d  E:\  Test.java
(2)可以自动生成文件中的包目录、
如:在当前目录下生成包: javac -d . Test.java
    在指定目录下生成包: javac -d E:\JavaLesson  Test.java
(3)使用javac -d . *.java  执行当前目录下的所有.java文件、
**设置环境变量指向D:\下文件、  set classpath=%classpath%;d:\cm\pack; 其中“%classpath%”表示原路径、
执行时,须在层次型包名最外层包的上一层执行文件、
如执行目录d:\cm\pack\Test.java下文件名为cm.pack.Test的包文件,须切到d:\执行。
 
**import语句:
在包外可以引入包中的类,若缺省包名时,使用import  如访问其他包中的类File时用:import java.io.File;
不缺省包名时也可直接访问其他包中的类:如:java.io.File;
引入整个包  import java.io.*;
在同一个包(文件夹)中的类可以相互引用,无需import语句。

**类的访问说明符 (同方法访问说明符)
public  公共类
default (默认)即缺省说明符时不能在包外被访问
final 不能被继承类
abstract 抽象类


11.*****方法******
final方法:
为了确保某个函数的行为在继承中保持不变,而且不能被覆盖(overridden)时使用、
class中所有的private和static方法自然就是final,即在子类中定义的这俩方法时父类的不会被覆盖。

抽象类和抽象方法:
在类中没有方法体的方法是抽象方法、含有抽象方法的类,即为抽象类、
如果子类没有现实抽象基类中所有的抽象方法,则子类也成为一个抽象类、
在子类中实现抽象方法就是在方法后加{};
抽象方法不能被实例化,因此我们可以将一个没有任何抽象方法的类声明为abstract,避免由这个类产生任何的对象、
构造方法,静态方法,私有方法,final方法不能被声明为抽象的方法、

native方法:本地方法
可以使用但不能编写的方法、
JNI可理解是java和本地应用程序之间的中介、也是不同编程语言接口。

回收器:garbage collect
System.gc();


******接口和内部类*******
12.接口:
使用interface定义接口,接口中方法都是抽象方法、
接口中所有的方法默认都是public abstract 说明符。
接口中可以有数据成员,这些成员“默认”都是public static final型公有静态常量。
在接口中声明方法时,不能使用native,static,final,synchronized,private,protected等修饰、
和public类一样,public接口也必须定义在与接口同名的文件中、
主要用于模块与模块间,类与类间的通讯协议、
java不允许类的多继承,但允许接口的多继承、即可以有多个父类、
java中一个类可以实现多个接口、
一个类在继承另外一个类的同时,还可以实现多个接口,如:class Sofa extends Chair impements Lie,Sittable{}、
接口的继承和类继承相同使用extends
接口的实现用关键字implements


13.内部类:inner class
*在一个类中定义另外一个类,这个类就叫做内部类或内置类 (inner class) 内部类可以多次嵌套。
*内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性。
*当我们建立一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的this reference形成的,使得
内部类对象可以随意的访问外部类中所有的成员(不论被嵌套在外部类中的任何位置(如方法或内部类中))。
*在方法中定义的内部类,只能在本方法内被引用。
*在方法中定义的内部类,如果要访问方法中定义的本地变量或方法的参数,则变量或参数必须被声明final。
*内部类可以声明为private或protected;还可以声明为abstract或final。
*内部类声明为final类后,不能再派生内部类。
*内部类可以声明为static的,但此时就不能再使用外部类的非static的成员变量和非static的成员方法;
*非static的内部类中的成员不能声明为static的,只有在顶层类(外部类)或static的内部类中才可声明static成员。

14.异常处理:
java异常处理类Throwable包含派生类Error(错误类)和Exception(例外/异常类)。
Java中的Exception异常类定义了程序中遇到的轻微的错误条件。
Java中的Error错误类定义了程序中不能恢复的严重错误条件。如内存溢出、类文件格式错误等。这一类错误由Java运行系统处理不需要我们去处理。
 
**********java类库的使用*********
*String和StringBuffer*
15.String
针对String的“+”和“+=”,是Java中唯一被重载的操作符.
String对象是常量对象.重新对String常量赋值时,是对栈内存引用的改变,使堆内存中的数据成为垃圾内存.
  如:String str1="acd"
            str1="126" //再次赋值使str1在堆内存中acd成为垃圾变量.
16.StringBuffer用来处理大量字符串时代替String,使用append来添加数据,使用toString()将StringBuffer转成String.
   注意StringBuffer中方法的使用.如append  delete insert
   toString方法可以被覆盖成自己编写的方法.

17.数组
对象数组的声明:Student[] students;
               students=new Student[3];
               students[0]=new Student("lisa","18");
length可以获得数组的长度;

18.main函数中main(String[] args)用于接收命令行参数.
方法:*在Java中,传参时,都是以传值的方式进行。
      对于基本数据类型,传递的是数据的拷贝;对于引用类型,传递的引用的拷贝。
      注意区分引用类型和数据类型.

19.类中clone方法的使用.

20.数组相关的方法的使用:java.util.Arrays

*数组拷贝arraycopy方法的使用.
 方法格式如:System.arraycopy(num1,0,num2,0,num1.length);
 对象数组copy是对象引用(地址)的copy(如指针),被copy的源对象和copy的对象共用堆内存. 属于引用copy.(比较clone).
 基本数据类型的copy,则是新开辟内存空间,互不影响.

*排序Arrays.sort方法:
在java.util.Arrays包中,如:
sort(int[] a, int fromIndex, int toIndex)  对指定 int 型数组的指定范围按数字升序进行排序。
sort(Object[] a) 根据元素的自然顺序对指定对象数组按升序进行排序。

*使用binarySearch方法对数组元素查寻:如//注意查寻前先对数组进行排序.
binarySearch(char[] a, char key)  使用二分搜索法来搜索指定的 char 型数组,以获得指定的值。
binarySearch(Object[] a, Object key)  使用二分搜索法来搜索指定数组,以获得指定对象。

21.封装类
八种基本数据类型定义的相应的引用类型-封装类
Boolean
Byte
Short
Integer
Long
Character
Float
Double

22.class类
每一个class都有一个相应class对象,编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值