JAVA基础知识点总结

    技术2022-07-10  148

    DOC :

    dir:目录 cd .. 返回上一级目录 cd \ 根路径

    java 语言得跨平台性:

    jvm:java虚拟机 编写的Java代码,都运行在jvm上 本身不具备跨平台性 jre:java的运行时环境(运行) jdk:java程序开发工具包(开发)

    三者的关系:

    配置环境变量:

    1)path: ;%JAVA_HOME%\bin; 2)java_home:jdk的安装目录

    标识符:

    给类,方法,变量起名

    变量:

    1.局部变量: 定义在方法内或者语句内,方法执行完,局部变量就没有了,**从属于语句块** 使用之前,必须手动进行初始化 2.成员变量: 定义在类里面,方法外面。**从属于对象** 使用之前,不需要手动进行初始化,系统自动初始化: 数字:0,0.0 布尔:false char:\u0000 引用类型:null 3.静态变量(类变量): 定义在类里面,方法外面,使用static修饰。 **从属于类** 使用之前,不需要手动进行初始化,系统自动初始化: 数字:0,0.0 布尔:false char:\u0000 引用类型:null

    数据类型:

    **1.基本数据类型** **a)数字** i.整数: byte(1个字节) -128~127 short(2个字节) -32768~65536/2 int(4个字节,整型常量默认该类型) -21亿 ~21亿 long(8个字节) ii.浮点数: float(4个字节) double(8个字节,浮点常量默认为该类型) **b)字符** char(2个字节) **c)布尔** boolean(1位) **2.引用类型(4个字节)** a)数组 b)对象 c)接口

    表达式:

    1.类型的自动提升 如果有long,结果就是long。 如果有double,结果就是double。 2.强制转型

    运算符:

    1.赋值运算符(=) 错误: 正确: if(b=true) if(b) if(c=3) if(3==c) 2.算术运算符 3.关系运算符(==) 常见错误写法: 1<a<3 1<a&&a<3 4.逻辑运算符 &&, ||, ! &,| 3&4 5.位运算符 &,|, <<(左移一位相当于乘以2),>>>(右移一位相当于除以2) 6.扩展运算符 +=,-=,*=,/=,%= 7.三目运算符 (布尔表达式)?A:B 如果为真 A返回 如果为假 返回B

    控制语句:

    1.顺序结构 2.选择结构 a)If b)If else c)If else if … else d)switch 多值选择 表达式:int或char/short/byte, 枚举 break问题 3.循环结构 a)while 先判断后执行 b)for c)do while 先执行后判断 break: 强制终止整个循环 continue:结束本次循环,继续下一次!

    面向对象基础:

    1.对象的进化史 a)基本数据类型阶段 数据少 无数据管理时代 b)数组 数据多了,将同类型的数据放到一起 弱管理 c)结构体 数据多了,数据复杂了。将不同类型的数据放到一起 强管理 d)对象 数据多了、类型复杂了、行为复杂了。将不同类型的数据放到一起 超强管理

    对象和类:

    对象是具体的,类是抽象的。 类也是一个模版,通过类这个模版我们也可以new 对象。 定义类: public class 类名 { (类名必须和文件名相同) //属性 private 数据类型 属性名; //建议增加相应的getter、setter方法 //方法 //构造方法 }

    构造方法:

    1.方法名必须跟类名保持一致 2.无返回类型 3.通过new来调用 4.无参构造器问题: a)如果我们没有手动定义构造器,系统会自动为我们添加一个无参的构造器 b)如果我们自己定义了构造器,系统就不会为我们添加无参构造器 5.构造方法的第一句总是:super,即调用直接父类的构造方法。 a)有继承关系的构造方法调用的顺序

    方法的重载(Overload):

    两同(同一个类、同一个方法名)三不同(参数列表不同:;类型、个数、顺序) 返回值不同,构成重载吗? No 形参名称不同,构成重在吗? No this: 普通方法中,调用本方法的对象。 构造方法中,正要初始化的对象。 还可以用来,调用其他的构造方法 super: static: 用它修饰的变量和方法,就变成了静态变量和静态方法。从属于类。通过类名即可调用。实际存储于方法区中。 package: package必须位于非注释行第一句。 包名:域名倒叙 import: 引入外部的类 Import static :导入类的静态属性 final: 修饰变量:常量(命名规范:全部大写,多个单词之间通过下划线隔开) 修饰方法:不能被重写 修饰类: 不能被继承

    面向对象的三大特征:

    封装 通过private、default 、protected、public关键字实现属性或方法的封装。 “高内聚,低耦合” 继承(extends) 两个好处: 1.代码重用 2.通过继承实现对现实世界更加准确的建模 类只有单继承,没有像C++那样的多继承 方法重写(Override)的要点: =:方法名保持一致 >=: 子类权限修饰符可以大于等于父类的。 <=, <=: 子类的返回值类型小于等于父类的类型。 子类声明异常类型不能超过父类的类型。 Object类: 1.是我们所有类的根基类 2.toString 3.equals、hashcode 4.wait、notify、notifyAll 多态(polymorphism) 三个必要条件:继承、方法的重写、父类引用指向子类对象 动态绑定、静态绑定: 抽象类(abstract): 1.包含抽象方法(抽象方法必须被子类重写)的类,一定是抽象类。 2.抽象类不能被new。 3.抽象类可以包含:普通方法、成员变量、构造方法。 接口: 1.interface 2.类实现接口:implements 可以实现多个接口 3.接口可以多继承 4.接口定义的一组规范!*实现现实世界中这样的逻辑::如果你是…则必须能…* 内存机制: 栈 1.存放局部变量 2.不可以被多个线程共享 3.空间连续,速度快 堆 1.存放对象 2.可以被多个线程共享 3.空间不连续,速度慢,但是灵活 方法区 1.存放类的信息:代码、静态变量、字符串常量等 2.可以被多个线程共享 3.空间不连续,速度慢。但是灵活 垃圾回收器(GC Garbage Collection): 1.程序员不能调用垃圾回收器。但是可以通过System.gc()建议回收。 2.finallize:一般也不用调用 递归算法: 1.递归头:什么时候不调用自己 2.递归体:什么时候调用自己

    异常机制

    1.try catch(先小后大) finally 2.声明抛出异常:throws 3.手动抛出异常:throw 4.自定义异常 a)extends Exception或者他的子类

    数组:

    1.长度固定,不可变 2.所有元素的类型一致。 3.元素类型可以为任意类型 4.通过下标来引用相关元素。下标不能超过length-1 5.数组也是对象。数组的元素可以看做对象的成员变量。所以,成员变量自动初始化的规则也适用于数组元素。 6.多维数组:数组的元素是数组 7.数组的三种初始化的方式: a)动态初始化 b)静态初始化: int[] a = {2,3,4} c)默认初始化 8.Arrays类:包含了对数组元素的排序、查找。 9.算法: a)冒泡排序 b)二分法

    容器:

    1.Collection a)List(有序,可重复) i.ArrayList 底层用数组实现。线程不安全,效率高 ii.LinkedList:底层用双向链表实现。线程不安全,效率高 iii.Vector:底层用数组实现。线程安全,效率低 b)Set(无序,不可重复) i.HashSet(内部是使用HashMap实现) 2.Map 采用“key-value”来存储我们数据。 a)HashMap 线程不安全,效率高 b)HashTable线程安全,效率低 3.Iterator 通过他,可以实现遍历容器中元素 4.泛型 5.Collections工具类

    常用类:

    1.包装类 实现了基本数据类型和对象的互相转化。 自动装箱、自动拆箱

    2.String/StringBuilder/StringBuffer String:不可变字符序列 StringBuilder:可变字符序列,线程不安全 StringBuffer:可变字符序列,线程安全

    3.时间:Date、DateFormat、Calendar Date:使用毫秒数来表示我们的时间概念。 DateFormat:实现Date对象跟String对象的互相转化(根据指定格式互相转化 yyyy-MM-dd) Calendar: 日期类。实现了将人的日期的概念跟Date的互相转化

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

    5.Math 数学类

    1 xxxValue() 将 Number 对象转换为xxx数据类型的值并返回。 2 compareTo() 将number对象与参数比较。 3 equals() 判断number对象是否与参数相等。 4 valueOf() 返回一个 Number 对象指定的内置数据类型 5 toString() 以字符串形式返回值。 6 parseInt() 将字符串解析为int类型。 7 abs() 返回参数的绝对值。 8 ceil() 返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。 9 floor() 返回小于等于(<=)给定参数的最大整数 。 10 rint() 返回与参数最接近的整数。返回类型为double。 11 round() 它表示四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11。 12 min() 返回两个参数中的最小值。 13 max() 返回两个参数中的最大值。 14 exp() 返回自然数底数e的参数次方。 15 log() 返回参数的自然数底数的对数值。 16 pow() 返回第一个参数的第二个参数次方。 17 sqrt() 求参数的算术平方根。 18 sin() 求指定double类型参数的正弦值。 19 cos() 求指定double类型参数的余弦值。 20 tan() 求指定double类型参数的正切值。 21 asin() 求指定double类型参数的反正弦值。 22 acos() 求指定double类型参数的反余弦值。 23 atan() 求指定double类型参数的反正切值。 24 atan2() 将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。 25 toDegrees() 将参数转化为角度。 26 toRadians() 将角度转换为弧度。 27 random() 返回一个随机数。

    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)PrintStream f)BufferedOutputStream

    3.Reader a)FileReader b)InputStreamReader:转换流:将字节流转化成字符流 c)BufferedReader

    4.Writer a)File Writer b)OutputStream Writer:转换流:将字节流转化成字符流 c)Buffered Writer

    多线程:

    1.定义多线程类的两种方式: a)Extends Thread b)Implements Runnalbe 2.线程的状态: a)new b)就绪状态(调用start方法后) c)运行状态 d)阻塞状态 i.sleep:不会释放持有的对象锁 ii.join:等待另一个线程执行完成 iii.wait:会释放持有的对象锁 iv.synchronized。运行同步代码,但是没有获得指定对象的锁,于是进入指定对象的锁池等待。 e)终止 i.不建议使用:stop、destroy直接终止。 ii.建议通过boolean变量,正常终止线程运行。 3.线程的优先级 a)1-10. 默认是5. b)优先级低只是意味着调用的概率低,并不是不被调用。 4.资源同步 synchronized修饰方法、语句块 5.死锁 建议不要同时持有多个对象的锁! 6.“生产者-消费者”模式

    网络编程:

    1.InetAddress:封装了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)事件对象:KeyEvent、MouseEvent…. b)事件源对象:组件 c)监听器(一般采用匿名内部类来定义): KeyListener KeyAdapter WindowListener WindowAdapter MouseListener MouseAdapter MouseMotionListener MouseMotionAdapter

    4.菜单制作 a)MenuBar b)Menu c)MemuItem d)CheckBoxMenuItem e)MenuShortCut 定义菜单项的快捷键

    多媒体编程:

    1.字体Font 2.Graphics 3.做音视频处理:JMF

    Processed: 0.011, SQL: 9