java知识串讲_java基础知识串讲
发布日期:2021-08-20 05:18:36 浏览次数:14 分类:技术文章

本文共 4115 字,大约阅读时间需要 13 分钟。

JDK的安装

1:下载,安装

2 :配置环境变量

a) path: ,;%Java_HOME%bin;

b)JAVA_HOME: JDK安装目录

c)classpath

3:JDK和JRE和JVM

JDK:JAVA开发工具包

JRE:运行环境

JVM:虚拟机

1:编译 :把java源文件编译成class字节码文件

2:运行java:运行calss文件。

标识符:给我们的类方法 变量起名 ;

1:以字母(采用Unicode字符集),下划线,¥开头;

2:其余部分可以使:字母(数字等,下划线)

3: 不能为关键字

变量:内存里内存块

1:局部变量

定义在方法内,或语句块内。

使用之前必须初始化!

2:成员变量(实例变量 field)定义在类里面  ,方法外面。从属于对象!

如果我们没有手动初始化成员变量,系统会自动初始化。初始化规则如下:

数字:0.0.0  布尔:false char:/0000  引用类型:null

3:静态变量(类变量)

定义在类里面 ,方法外面,使用static修饰。从属于类!

系统自动初始化

2:对象和类:

对象是具体的,类是抽象的。类也是一个模板,通过类的模板我们也可以new对象

定义类:public  class (类名){

//属性

private 数据类型  属性名;//增加相应地getter、setter方法

//方法

//构造方法(构造器)

构造方法:

1:方法名必须跟类名保持一致

2:无返回类型

3:通过new来调用

4:无参构造器

a)如果我们没有手动定义构造器,系统会自动为我们添加一个无参构造器

b)如果我们自己定义了构造器,系统就不会为我们添加无参构造器

5:构造方法的第一句总是:super,即直接调用父类的构造方法

a)有继承关系的构造方法调用的顺序

6:方法的重载(Overload):

两同(同一个类,同一个方法名)三不同(参数列表不同,类型,个数,顺序)

形参名称不同构成重载吗?no

返回值类型不同构成重载吗?no

this:

普通方法中:调用本方法的对象

构造器方法中:正要初始化的对象

还可以用来调用其他的构造方法

static:用它修饰的变量和方法,就变成了静态变量和静态方法。从属于类,通过类名即可调用。实际储存于方法中

package:必须位于第一句。

包名: 域名倒着写

import:引入外部的类

statc import :导入类的静态属性

final:修饰变量:常量  命名规范:全部大写  多个单词之间通过下划线隔开

修饰方法:不能被继承

修饰类:  不能被继

}

面向对象三大特征:

封装:

通过 private  default  protected  public 关键字实现属性或方法的封装,“高内聚, 低耦合”

继承:

通过:extends  两个好处:

1)代码重用

2) 通过继承实现对现实世界更加准确的建模

多态(polymorphism):

三个必要条件:继承  方法的重写 父类的引用只想子类对象。

类只有单继承

方法的重写Override:

=: 方法名保持一致

>=: 子类权限修饰符可以大于等于父类的

<=: 子类的返回值类型小于等于父类的类型。子类声明异常不能超过父类的类型

Object:

1:使我们所有类的根基

2:toString

3:equals、hashcode

4:wait、 notify、 notifyAll;

动态绑定、静态绑定

抽象类 abstract:

1:包含抽象方法的类,一定是抽象类;

2:抽象类不能被new

3:抽象类可以包含:普通方法、成员变量 构造方法

接口:

1:interface

2:类实现接口:implements 可以实现多个接口

3:接口可以多继承

4:接口定义了一组规范:实现现实世界中这样的逻辑:如果你是....必须是....

内存机制:

栈:

1:存放变量

2:不可以多个线程共享

3:空间连续,速度快

堆:

1:存放new出的对象

2:可以被多个线程共享

3:空间不连续 速度慢  但是灵活

方法区:

1:存放类的信息:代码、静态变量、字符串常量

垃圾回收机制(GC Garbage Collection):

1:程序员不能调用垃圾回收器。但是可以通过System.gc()建议回收、

2:finalliza:一般也不用去调用。

递归算法:

1:递归头:什么时候不调用自己

2:递归体:什么时候调用自己

异常机制:

1:try catch  finally

2:声明抛出异常:throws

3: 手动抛出异常: throws\

4:自定义异常

a)extends Exception或者其他的子类

数组:

1:长度固定,不可变

2:所有元素的类型一致

3:元素的类型可以为任意元素

4:通过下标来引用相关元素。下标不能超过lenth-1

5:数组也是对象,数组的元素可以看做对象的成员变量,所以,成员变量自动初始化的规则也适用于数组元素。

6:多维数组:数组的元素是数组。

7:数组的三种初始化的方式:

a)动态初始化

b)静态初始化 int【】 a = {2,3,5};

c)默认初始化

8:Arrays类,包含了对输出元素的排序,查找。

9:算法:

a)冒泡排序

b)二分法

容器:

1:Collection

a)List(有序可重复)

ArrayList:底层用数组实现,线程不安全,效率高

Linkedlist:底层用双向链表实现。线程不安全,效率高

Vector:底层用数组实现,线程安全,效率低

b)Set(无序,不可重复) HashSet(内部的使用HasMap实现)

2:Map:

采用“Key-value”来储存我们的数据

a) HashMap线程不安全,效率高

b)HasTtable 线程安全,效率低

3:lterator

通过他,可以实现遍历元素中元素

4:泛型

5:Collection个 工具类

常用类:

1:包装类:

实现了基本数据类型和对象的互相转化,自动装箱,自动拆箱

2:String/StringBuilder/StringBuffer

StringBuilder:可变字符序列,线程不安全

StringBuffer:可变字符序列,线程安全

3:时间:

Date,DateFormat,Calendar

Date:使用毫秒数来表示我们的时间概念

DateFormat:实现Date对象跟String对象的相互转换(跟定指定格式相互转化)

Calender:日期类、实现了将人的日期的概念跟Date的相互转换

4:file

代表文件或者目录的一个抽象

5:Math

数学类

6:枚举

如果我们要定义一族常量,建议使用枚举

不要学习和使用枚举的高级特性

IO流:

1:InputStream

a) FileInputStream

b)ByteArrayInputStream

c)ObjectInputStream

d)DataInputStream

e)BufferedInputStream

2:OutputStream

a)FileoutPutStream

b)ByteArrayOutputStream

c)ObjectOutPutStream

d)DataOutputstream

e)PrinStream

f)BufferedOutPutStream

3:Reader

a)FileReader

b)InputStreamReader:转换流,将字节流转化成字符流

c)BufferedReader

4:Writer

a)File Wirter

b)Output Stream Writer:转化流:将字节流转换成字符流

c)BufferedWriter

多线程:

1:定义多线程类的两种方式

a)ExtendsThread

b)ImplementsRunnalbe

2:线程的状态

a)new

b)就绪状态(调用start方法后)

c)运行状态

d)阻塞状态

i: sleep:不会释放持有的线程锁

ii:join:等待另一个线程执行完成

iii:wait:会释放持有的对象锁

iiiv:synchronized。运行同步代码,但是没有多的指定对象的锁,于是进入指定对象的锁池等待

e)终止:

i:不建议使用,stop,destroy直接终止

ii:建议通过boolean变量,正常终止线程运行

3:线程的优先级:

a)1-10默认是5

b)优先级别低,并不是不被打调用

4:资源同步:

synchronized 修饰方法修饰方法块

5:死锁

建议不要同时持有多个对象的锁

网络编程:

1:InetAnddress:封装了IP和DNS,没有端口

2:InetSocketAddress:封装了IP和端口

3:URL:代表一个网络的资源

a)openStream

4:TCP通讯

a)特点:面向连接、安全、稳定

b)ServerSocket

c)Socket

5:UDP通信

a)特点:不面向连接。可能会丢失数据。发送数据效率不高

b)DatagramPacket:数据打包

c)DategramSocket:数据发送和接受

GUI编程(AWT,SWING,SWT):

1:组件

a)Component(普通组件,容器)

2:布局管理器

a) FlowLayout

b)BorderLayout

c)CardLayout

d)GridLayout

3:事件

a)事件对象

b)事件源对象,组件

c)监听器(一般采用匿名内部类来定义)

i:KeyListener  KeyAdapter

WindowListener  WindowAdapter

MouseListener Mouseadapter

4:菜单制作

a)MenuBar

b)Menu

c)Memultem

d)CheckBoxMenultem

e)MenuShorcut:定义菜单项的快捷键

多媒体编程:

1:字体 Font

2:Graphics

3:做音视频处理:JMF

·

转载地址:https://blog.csdn.net/weixin_33501587/article/details/114126903 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java 时间动态显示_java 动态显示时间
下一篇:java list按时间排序吗_Java 对List中每个对象元素按时间顺序排序

发表评论

最新留言

很好
[***.249.79.50]2022年07月06日 12时15分26秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

mysql数据库 | 数据库优化 2019-12-19 17:39:55
mysql数据库 | MVCC 2019-12-19 17:39:56
JVM原理 | 逃逸分析 2019-12-19 17:39:54
mysql数据库 | 三大范式 2019-12-19 17:39:54
mysql数据库 | 数据库引擎简述 2019-12-19 17:39:54
mysql数据库 | 索引 2019-12-19 17:39:54
mysql数据库 | 锁相关 2019-12-19 17:39:55
【先看这个】目录页 2019-12-19 17:39:53
JVM原理 | JVM内存模型 2019-12-19 17:39:53
JVM原理 | GC机制 2019-12-19 17:39:53
JVM原理 | 类加载过程 2019-12-19 17:39:53
JVM原理 | 永久代和元空间区别 2019-12-19 17:39:53
JVM原理 | TLAB是什么 2019-12-19 17:39:53
多线程 & 线程经典案例 &锁 详细笔记 2019-12-19 17:39:52
红黑树 详细笔记 2019-12-19 17:39:52
常见排序算法总结 2019-12-19 17:39:52
跨域实现之JSONP/CORS模板代码及笔记 2019-12-19 17:39:52
java中常见锁的总结( 非常全 ) 2019-12-19 17:39:53
关于mysql数据库基础面试题的一些总结 2019-12-19 17:39:53
Ajax原生代码以及封装调用 2019-12-19 17:39:51