您当前的位置: 首页 >  Java

惊鸿一博

暂无认证

  • 2浏览

    0关注

    535博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java基础知识汇总

惊鸿一博 发布时间:2020-01-08 23:55:15 ,浏览量:2

目录

1 基础知识

2 区别不同

3 语法

3.1 数据类型

3.2 面向对象

3.2.1 继承 extends

3.2.2 super关键字

3.2.3 重写

3.2.4 多态

3.2.5 抽象类 abstract

3.2.6 final

3.2.7 接口 interface 与 implements

3.3 包的使用规则 package

3.3.1 jar的使用

3.4 异常处理

3.4.1 finally的作用:

3.4.2 自定义异常一个例子

3.5 小细节

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

3.5.2 toString方法

3.5.3 String 与StringBuffer

3.5.4 equals方法

4 线程相关

4.1 什么是程序

4.2 进程

4.2.1 线程基本概念

4.2.2 线程控制的基本方法:

4.2.3 线程同步 Synchronized

4.2.4 notify和wait方法

5 用户界面GUI: 组件awi 或Swing

6 事件

7 匿名类使用场景

8 jar包生成

9 容器

9.1 容器API类图(Set List Map)

9.2 为什么需要容器

9.3 ArrayList与LinkedList区别

9.4 Hash Table 哈希表

9.5 为什么要重写hashcode方法?

1 基础知识

       java语言的历史:

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

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

       java两大核心机制:

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

              Garbage Collection: 垃圾自动回收

       JDK:java开发工具包,包含了JRE

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

       JRE: java运行环境,包含jvm和核心类库

       java语言特点:

              1)简单易学

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

                     类库丰富!!

                     完全面向对象!!

              2)安全性高

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

                     垃圾自动回收

                     禁止非法内存访问

              3)跨平台

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

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

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

4)多线程

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

       java应用领域:

               

2 区别不同

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

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

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

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

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

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

5) 不使用include ,使用import

6)环境变量:

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

cd .. 返回上级目录

cd \ 返回根目录

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

9)java语言思想

面向对象:

是 一种哲学思想:

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

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

3 语法 3.1 数据类型

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

\u0030 u表示unicode编码方式

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

3.2 面向对象

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

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

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

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

3.2.1 继承 extends

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

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

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

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

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

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

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

3.2.3 重写

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

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

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

3.2.4 多态

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

3.2.5 抽象类 abstract

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

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

3.2.6 final

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

3.2.7 接口 interface 与 implements

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

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

接口的多态使用:

 

3.3 包的使用规则 package

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

jar包之间的访问:

3.3.1 jar的使用

执行打包命令

如何使用jar包中的类

3.4 异常处理

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

3.4.1 finally的作用:

3.4.2 自定义异常一个例子

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

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

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

3.5.2 toString方法

printf 对比 printfln:

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

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

3.5.3 String 与StringBuffer

3.5.4 equals方法

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

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

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

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

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

4 线程相关 4.1 什么是程序

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

4.2 进程

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

4.2.1 线程基本概念

class Mythread extends Thread { }

class Mythread implements Runable { }

4.2.2 线程控制的基本方法:

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

4.2.3 线程同步 Synchronized

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

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

4.2.4 notify和wait方法

5 用户界面GUI: 组件awi 或Swing

网页界面: html + css

6 事件

7 匿名类使用场景

8 jar包生成

9 容器 9.1 容器API类图(Set List Map)

9.2 为什么需要容器

9.3 ArrayList与LinkedList区别

9.4 Hash Table 哈希表

9.5 为什么要重写hashcode方法?

例子:

(onging) hereto: 100集 13min

参考: 郝斌 java视频教程

关注
打赏
1663399408
查看更多评论
立即登录/注册

微信扫码登录

0.0383s