Java基础知识汇总

目录

基础知识

区别不同

语法

数据类型

面向对象

继承 extends

super关键字

重写

多态

抽象类 abstract

final

接口 interface 与 implements

包的使用规则 package

jar的使用

异常处理

finally的作用:

自定义异常一个例子

小细节

细节:类方法传参与类型检查

toString方法

String 与StringBuffer

equals方法

线程相关

什么是程序

进程

线程基本概念

线程控制的基本方法:

线程同步 Synchronized

notify和wait方法

用户界面GUI: 组件awi 或Swing

事件

匿名类使用场景

jar包生成

容器

容器API类图(Set List Map)

为什么需要容器

ArrayList与LinkedList区别

Hash Table 哈希表

为什么要重写hashcode方法?


基础知识

       java语言的历史:

              最初是为了控制家用电器设计的,

              网络的兴起(不同机器不同软硬件环境,java可以跨平台)让java火起来

       java两大核心机制:

              JVM:java虚拟机for windows/unix/linux,一次编译到处运行;也是一个软件

              Garbage Collection: 垃圾自动回收

       JDKjava开发工具包,包含了JRE

              包含工具:编译源代码的javac.exe 运行java程序的java.exe

       JREjava运行环境,包含jvm和核心类库

       java语言特点:

              1)简单易学

                     摒弃了指针 结构 及内存管理:程序员只需要分配内存,不需要释放内存,jvm自动管理(在程序闲时自动释放)   

                     类库丰富!!

                     完全面向对象!!

              2)安全性高

                     强类型语言,类型检查必c/c++严格

                     垃圾自动回收

                     禁止非法内存访问

              3)跨平台

                     作为一门网络语言:编译成结构中立的中间文件格式(与平台无关的字节码格式),在系统对应的jvm上运行

                     c/c++ 编译成 特定机器的机器语言(用户->高级语言程序->编译器->操作系统->硬件)

                     java: 编译成 与平台无关的字节码格式,由jvm来转换成 特定机器的机器语言

Java基础知识汇总Java基础知识汇总

4)多线程

       在语言上支持多线程的设计

       java应用领域:

              Java基础知识汇总  

区别不同

       1)源代码以".java"结束;.java文件名称一般应该与文件中定义的public class类名保持一致;

              并且一个java文件只能有一个public class类(启动类

       2) 编译命令: javac HelloWorld.java 编译时,使用文件名,会生成文件中以类名命令的.class文件

              运行命令: java HelloWorld //=>注意没有后缀!!执行的是 类名命令的.class文件

       3) 编译好后是.class文件 (与平台无关的字节码格式,由jvm来转换成 特定机器的机器语言)

       4) java中的函数,也叫做方法,使用自己class对象,不需要定义形参

Java基础知识汇总

5) 不使用include ,使用import

6)环境变量:

Java基础知识汇总

       7)cd命令 windows切换目录:cd 目标目录 enter后, 还需要输入目标目录的盘符!

Java基础知识汇总

cd .. 返回上级目录

cd \ 返回根目录

       8) /** */ 用于将注释变成说明文档,用javadoc实现

9)java语言思想

面向对象:

是 一种哲学思想

要解决问题,先创造对象,通过对象来模拟事务:

对象= 静态属性 + 动态行为

语法

数据类型

Java基础知识汇总

Java基础知识汇总

%x 输出以16进制形式表示、小写 “#”表示输出数值前加0x

Java基础知识汇总

Java基础知识汇总

\u0030 u表示unicode编码方式

java中,类型所占用的字节数是确定不变的:(c/c++ 字节数只规定不能小于xxx,与机器有关的)

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

面向对象

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

类的属性,也叫 类的数据成员字段

Java基础知识汇总

  1. protected和 public可以通过类名访问,private不能通过类名访问
  2. 静态方法只能访问静态成员、静态方法
  3. C语言中,我们对一个功能函数要实现不同类型的调用时,就必须得取不同的名称; c++/java可以重载(只要函数形参列表(个数or类型)不一样即可),函数返回值不同,不能作为重载的条件
  4. 类中的属性,会被系统默认初始化;局部变量则不会被系统初始化。
  5. 内存空间分配:

Java基础知识汇总

同一个类的两个对象,放在栈空间,对象对应的属性值分别放在堆空间,类的方法放在代码区,只有一份!show方法通过this找到对应的对象的属性值,每个非static方法都还有一个this指针

  1. String 类型:字符串 S大写
  2. static定义类的静态属性或者方法,静态成员可以通过类名访问,也可以通过类的实例对象访问
    1. 若希望一个类没有实例对象,将其构造函数定义成private的即可
    2. 构造函数不能定义成static的即可
    3. 如何定义一个只能实例化一个对象的类(aa类似于链表中的指针,可以指向本身)

Java基础知识汇总

继承 extends

关键字 extends: 只支持单继承,不支持多继承(c#同样不允许,c++却允许)

理解:   B是一个A吗?若是 则B可以继承A;

反映的是一般到特殊的关系,如(人->男人->男学生)

Java基础知识汇总

父类的私有成员不能被继承(物理上已经有继承,只是不能访问),所以继承要慎重,否则浪费内存空间

子类对象,可以调用父类的protected方法

Java基础知识汇总

super关键字

  1. 只能在子类中的构造方法中使用,用于初始化继承自父类的属性;
  2. 前提是,父类中已经定义了相应签名的构造方法
  3. 同时,若是子类在构造方法中不调用super方法,则默认使用“super();”调用父类的“A()”构造函数;此时,应确保父类A中,显式定义了的构造函数“A(){…}”!
  4. 调用的super方法,应位于子类构造方法的最前面的语句,且只能调用一次super方法
  5. super代替父类的类名在子类中调用父类的public或protected方法

Java基础知识汇总

子类的普通方法不能调用super方法

Java基础知识汇总

重写

目的:对父类的方法不满意,想要更新或者拓展父类的方法:

Java基础知识汇总

注意:子类继承的方法的权限,不应比继承自父类的方法更严格(为了保证多态都能实现)下面的两个关键字应互换,否则会出错。

Java基础知识汇总

注意:返回值不能作为重载的条件,如下,会报错:因为子类中有了两个同名同参但不同返回值的方法!

Java基础知识汇总

多态

父类=子类:因为子类可以当做父类看,所以可以把子类赋值给父类

Java基础知识汇总

抽象类 abstract

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

可以定义一个抽象类的引用,A a; // ok

不可以定义一个抽象类的对象 A a = new A(); // error

final

Java基础知识汇总

Java基础知识汇总

被final修饰的变量是常变量,类似 c++中的const修饰符

Java基础知识汇总

接口 interface 与 implements

比抽象类要求更严格的抽象类,因此不能new出对象来

Java基础知识汇总

属性系统会默认赋值;局部变量定义后,不初始化是一个垃圾值(java语法不允许(使用未初始化的局部变量),c语法不检查)

接口的多态使用:

Java基础知识汇总

 

Java基础知识汇总

包的使用规则 package

classpath:编译器去查找的当前使用的class类所在的路径;若当前使用的class类不在当前执行时的路径下,则应该通过cmd中设置“set classpath=你的用到class类的顶层路径;”来让编译器找到当前使用的类。

Java基础知识汇总

jar包之间的访问:

Java基础知识汇总

jar的使用

Java基础知识汇总

执行打包命令

Java基础知识汇总

如何使用jar包中的类

Java基础知识汇总

异常处理

Java基础知识汇总

Java基础知识汇总

throws: 将本函数发生的异常交给调用者处理,自己不作处理,及向外抛出

Java基础知识汇总

finally的作用:

Java基础知识汇总

自定义异常一个例子

Java基础知识汇总

小细节

细节:类方法传参与类型检查

              a) 类里面 方法可以直接使用属性变量,而不用传参。

          b) 严格类型:double跟int 不会隐式转换,会报错!又如if(3),会报错,数字就是数字,boolean就是布尔,不能混用。

toString方法

Java基础知识汇总

printf 对比 printfln:

printf: 输出多个对象时,使用比较方便; 输出指定格式的数据时比较方便。

printfln: 输出自定义对象时比较方便(调用toString方法)

String 与StringBuffer

Java基础知识汇总

equals方法

同一个类的两个对象,即使两者的属性值都相等,这个两个对象也不相等,即a1.equals(a2) 返回的是false.

同一个list容器,可以放不同类型的数据(数组则只能放同类型的对象)

但是在set容器中(不允许元素重复),对于具有相同属性值得同一个类的两个对象,不会重复添加!

重写equals方法,让同一个类的相同属性的两个对象,返回相等的判断结果。

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

一个例子:new出来的string存在堆区,直接比“==”,比的是地址,不相等;赋值定义string, 存放在静态数据区(字符常量区),比“==” 比的是字符串常量,所以相等。

Java基础知识汇总

线程相关

什么是程序

所谓的程序,是一个严格有序的指令的集合,程序规定了完成某一任务时,计算机所需要做的各种操作,以及这些操作的执行顺序。

进程

Java基础知识汇总

Java基础知识汇总

进程3部分组成:程序段 数据段 PCB(进程控制块)

线程基本概念

class Mythread extends Thread { }

class Mythread implements Runable { }

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

Java基础知识汇总

线程控制的基本方法:

Java基础知识汇总

线程优先级:1~10, 主线程默认是5,子线程与父线程默认优先级相同。

Java基础知识汇总

线程同步 Synchronized

Java基础知识汇总

推荐使用继承接口Runnable的方法,构造需要执行的多线程类。

原因如下:使用同一个类对象可以构造多个线程对象,这样,访问的是同一个类对象,便于使用同步机制。

Java基础知识汇总

notify和wait方法

Java基础知识汇总

用户界面GUI: 组件awi 或Swing

Java基础知识汇总

网页界面: html + css

事件

Java基础知识汇总

匿名类使用场景

Java基础知识汇总

jar包生成

Java基础知识汇总

容器

容器API类图(Set List Map)

Java基础知识汇总

为什么需要容器

Java基础知识汇总

ArrayList与LinkedList区别

Java基础知识汇总

Hash Table 哈希表

Java基础知识汇总

为什么要重写hashcode方法?

Java基础知识汇总

例子:

Java基础知识汇总

(onging) hereto: 100集 13min

参考: 郝斌 java****