目录

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: 垃圾自动回收

JDKjava开发工具包,包含了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视频教程

Java基础知识汇总相关推荐

  1. java基础知识汇总4

    三.集合(collection.set.list.map) 一.定义: 集合是Java里面最经常使用的,也是最重要的一部分.可以用好集合和理解好集合对于做Java程序的开发拥有无比的优点. 容器:用来 ...

  2. 史上最强——JAVA基础知识汇总

    1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...

  3. java基础知识大全,java 基础知识点汇总

    java 基础知识点汇总 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个Strin ...

  4. 作为一名Java开发者应该掌握的基础知识汇总!

    Java语言作为热门编程语言之一,受到了更多的欢迎.今天小千就为大家介绍一下作为一名Java开发者应该掌握的基础知识. 一.修饰符 java语言中提供了一些修饰符,这些修饰符可以修饰类,变量和方法. ...

  5. python基础知识资料-学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...

  6. JAVA基础知识|lambda与stream

    lambda与stream是java8中比较重要两个新特性,lambda表达式采用一种简洁的语法定义代码块,允许我们将行为传递到函数中.之前我们想将行为传递到函数中,仅有的选择是使用匿名内部类,现在我 ...

  7. Java后端知识汇总(部分)

    Java后端知识汇总(部分) 一. Java基础 二. Redis知识详解 三. 计算机网络 四.Spring知识体系 五.Java虚拟机 六.Java高并发 (同一块知识建议结合着看,便于查漏补缺) ...

  8. Java基础看jvm,JAVA基础知识|java虚拟机(JVM)

    一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...

  9. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  10. 脑科学与脑电基础知识汇总

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 脑科学与脑电基础知识汇总 该部分汇总了社区分享的部分脑科学.EEG.fNIRS.BCI.人机交互等相关知识. 脑电与情绪 ...

最新文章

  1. 第十六届全国大学生智能车竞赛比赛获奖证书格式说明以及下载链接
  2. md5sum算法 —— linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序
  3. tcp port numbers reused出现原因_python socket(tcp 线程)实现简单聊天室
  4. 线程和进程之间的联系----基本概念
  5. 第九十三节,html5+css3移动手机端流体布局,基础CSS,头部设计,轮播设计,底部设计...
  6. keras核心已转储_转储Keras-ImageDataGenerator。 开始使用TensorFlow-tf.data(第2部分)
  7. Java LinkedList对象的get(int index)方法与示例
  8. Lync Server 2010标准版系列PART6:启用Lync
  9. Flume架构以及应用介绍[转]
  10. FineReport(二)帆软报表图表的
  11. 清风数学建模学习笔记——TOPSIS法(优劣解距离法)
  12. P10(1R)单红V706模组32X16 LED显示屏的二十项小实验
  13. Nginx流媒体服务器搭建
  14. 汽车级485通信电路
  15. project不显示里程碑标志_Project教程 在Project软件中如何让里程碑任务显示更直观...
  16. 部署高校房屋管理系统可以实现哪些目标?
  17. week3 摄像头捕获人脸 AI换脸
  18. 新版本android_id,android手机唯一id方案总结
  19. java web视频学习-ServletContext和Request和Response
  20. 基于Linux的信息处理板卡,linux硬件信息查看

热门文章

  1. 使用猴子测试工具(1)
  2. [Bzoj2120]数颜色
  3. 静态HTML模板渲染
  4. CDN:内容分发网络
  5. 你知道军装照H5浏览了多少次吗? 10亿
  6. 微信统一支付接口返回“签名错误”的可能原因
  7. normalize.css v2.1.2 翻译
  8. 为什么快速排序比归并排序快
  9. 程序关闭是总是出异常解决方法
  10. vscode-设置tab转空格数4为2