一、java 环境变量
1. 计算机-》属性-》高级系统设置-》环境变量-》系统变量
JAVA_HOME : jdk的安装路径:如:c:/p***/java/jdk
PATH: 在最后增加 : %JAVA_HOME%\bin
2. JDK:Java开发环境
JVM:Java虚拟机
JRE: java运行环境
API:应用程序接口(Application Program Interface:应用程序开发接口)
二 基础语法
1.变量、常量
注意命名规范:只能由字母、数字、下划线、$组成,不能以数字开头,而且尽量见名知意
字面常量 ,如10,‘a’
只读变量:public static final 修饰
2.数据类型:存放的是具体的值
1.基础类型{
数值类型 byte short int long
浮点型 float double
字符型 char
布尔类型 boolean
}
2.引用类型:引用类型变量存放的是对象的地址
{
类、接口、数组、等
}
3. 分支结构(if switch)
4.循环:
for :
while
do-while:至少执行一次。
(continue:表示结束本次循环结束,继续下次循环; break跳出循环;循环嵌套中使用一个变量记录,判断后 跳出)
注意:
1.如果有嵌套的循环,如何在内循环中进行判断,跳出循环-->:借助标志位,内循环中使用break前,使用该值,在外循环中判断该值,决定是否进行break。
2.for循环进行删除数组、集合中的元素,如果避免越界报错?
:反向删除数据(for循环倒着来)
三、数组
:具有相同数据类型的元素的有序集合
注意:数组在创建后,大小固定,数组是引用类型,数组的内容在堆里
数组下标不能越界
尽量不要对数组的遍历进行删除操作。
3.
冒泡排序:
for(int i=0;i<n-1;i++){
for(int j = 0;j<n-i-1;j++){
//第一个依次往后进行比较,大的或小的放最后
}
}
选择排序:
for(int i=0;i<n-1;i++){
for(int j =i+1;j<n;j++){
//i 和j 处元素进行比较
}
}
4.工具类:
Arrays.sort(); Arrays.toString(); Arrays.binarySeach();二分查找
Arrays.copyOf(): 对数组进行复制,复制时,可以指定数组的大小(list集合底层就是维护一个数组)
五、 方法
修饰符 返回值类型 方法名(形参列表){
}
值传递:******
如果形参为基本的数据类型,表示值传递,如果方法中对形参进行修改,不会影响到实参的值
引用传递:******
如果形参为引用类型,会进行引用传值,本质上,传递的是对象的地址。通过形参可以对引用的对象进行修改
六、 面向对象:
1.类: 可以定义属性、方法 非静态的成员变量放在堆中
this 关键字:哪个对象调用的方法调用使用this,this就引用谁(static 方法不能用this)
静态 static: 非静态方法中可以调用静态的变量和方法;
静态方法中只能使用静态的变量和方法;
静态的变量和方法直接通过类进行调用
静态的变量和方法与对象无关,静态的变量存放在方法区中的常量区;在加载字节码文件时,就会创建静态变量
final 关键字
final修饰的变量不能修改,方法不能重写,类不能继承
final修饰的成员变量,可以在声明时直接赋值;如果声明时没有赋值,就必须在构造方法中赋值
继承 extends
java 是单继承
如果父类的方法的功能完全不能满足自雷的需求,子类的重写的方法可以重新实现;如果满足部分功能,子类的方法可以通过super调用父类的方法,然后增加自己的逻辑。
多态
父类引用子类的对象,通过父类引用调用相同名称的方法,表现不同
向上转换,父类引用子类对象
向下转化,父类的引用转换为子类的引用,需要进行强制类型转换(因为父类引用不能调用子类独有的方法)
访问权限:
private
public
缺省的::可以在本类中、类外、子类中访问,不能跨包访问,其他包子类不能重写缺省的方法。
protected:跟缺省的修饰类似,区别是:其他包子类可以重写该方法。
2.抽象类
抽象类不能直接创建对象,子类继承抽象类,必须重写父类的抽象方法,抽象类中可以没有抽象方法,但是如果类中有抽象方法,该类必须为抽象类
3.接口 (功能上的拓展,指定规范,搭建程序架构时使用)
接口中的成员变量默认使用public static final 修饰符
接口中的方法默认使用public abstract 修饰符
接口不能直接创建对象,类实现接口必须实现接口中的所有方法
接口直接可以多继承(extends),通过接口也可以实现多态。
4.内部类
重点掌握匿名内部类
很多方法,使用的参数为抽象类或接口,这时可以考虑使用匿名内部类创建对象
*** 通过匿名内部类创建对象:new 抽象类/接口(){重写的方法}
比如 通过Arrays.sort Collections.sort 进行排序时,传递包含排序方法的对象; 使用Runnable实现的线程(官方用的较多,自己定义的一般不用);
七、 字符串
1.String :字符串内容不可变
length ; charAt(); subString(可以指定截取的范围,不包括end); replace; lastIndexOf ; equals; contains; split; replaceAll; match; concat (拼接);comapreTo(比较); startWith 等方法
创建字符串方式的差别:
String str = "hello"; "hello"在字符串常量区,只有一份
String str1 = new String("world") "world"存放在堆里
2.StringBuilder:字符内容可变,非线程安全
insert、append、delete、deleteAt、replace (String有的它都有)
3.StringBuffer:和StringBuilder用法相同,线程安全的,效率低,不常用。
八、异常机制:
1. 捕获异常: Try - catch - finally (finally可以不写):无论是否有异常finally代码都会执行(System.exit被调用时,finally程序不执行)。
2. 抛出异常: 在方法中通过throw抛出异常,声明抛出异常的方法。
3. 自定义异常:
九、集合
1. Collection {List ,set}
List:有序列表,可以有重复元素(size, add, remove, indexOf , get......)
ArrayList(重点):底层使用数组存储元素,查询数据效率高
LinkedList:底层使用双向链表维护元素的顺序,相对来说增删效率高
Vector(了解)
Set :无序集合,不能存放重复元素
HashSet(重点)
TreeSet
LinkedHashSet
1. 如何判断两个对象相同? ******
:通过HashCode 方法和 equals方法,首先判断两个对象得到hash值是否相同,如果不同,认为两个对象不同;如果相同,通过equals判断对象内容是否相同,确定是否是相同对象。
2.集合排序 ***
1)、待排序的对象的类实现comparable接口,重写compareTo方法
2)、自定义排序类,实现comparator接口,重写compare方法(推荐)
2. Map存放键值对,key唯一,不同的key可以有相同的value
HashMap(重点)
LinkedHashMap
TreeMap
注意:ArrayList 、HashSet、HashMap 这三种
3. 集合和数组的区别:集合长度可变,集合中元素类型可以不同(没有泛型的情况下),但是集合只能存放引用类型。
3.1 泛型 (一般不自己创建,集合中用的多): 类型参数化,在集合中一般会使用泛型约束的元素类型
迭代器 Iterator:通过迭代器堆集合进行遍历,可以删除集合中的数据,但是在删除(remove)之前,必须先调用next方法
十、IO流
1. File:文件的创建与遍历
2.字节流
输入流:InputStream
FileInputStream:读文件内容
BufferedInputStream:内部使用缓冲区,提高读写效率,可以readLine;
ObjectInputStream:对象流,实现对象序列化(对象所属类必须实现Serializeble接口)
输出流:OutputStream
FileOutputStream:通过流 向文件中写内容
BufferedOutputStream
ObjectOutputStream
3.字符流
Reader
InputStreamReader:转化流,提供了字节流和字符流之间的桥梁,从流向来说,从字节流转换为字符流。可以在转换中指定编码。
Writer
OutputStreamReader:转换流
4 . RandomAccessFile:主要作用:对文件内容进行定位
5. readLine 读取的数据进行重新编码的问题?
::读到的 new String (getByte[],"utf-8");这种类型
IO中重点掌握:针对文件的字符流、字节流、转换流、
十 一、 线程
1. 两种创建方式:a.、继承Thread类,重写run方法;
b、实现Runnable方法,重写run方法(推荐)
2. 线程同步:访问共享资源的时候,考虑同步的问题。
3.同步代码块:多个线程使用相同的对象锁 (Object对象;Class对象;共享的资源);
4. 同步方法(对象方法 this)
十二、 网络编程(socket套接字)编程
Udp 编程:使用udp协议进行通信,udp面向无连接,速度快,可能会出现丢数据
Tcp 编程:分为socket和服务端socket
Tcp面向连接的协议,建立连接时,会进行三次握手,传输过程中会进行数据校验,如果丢包,会进行数据重发。
十三、 反射
1.在程序执行过程中,动态获得相关的方法和属性,并对其进行操作。
Class 描述类的信息的类型
Constructor:构造方法类
Method :方法的类
Field:属性的类
2. 内省机制:通过反射,调用get和set方法,对属性进行操作
十四、 XML解析
1.DOM 方式,使用dom4j: (重点)
一次性将xml文档内容读到内容中,形成DOM树,解析时通过树结构,依次获得相关的节点。
SAX 方式,使用java自带的类。 : 基于事件驱动,读到不同的内容时会回调相关的方法。
2. Xpath: 提供了快速查找xml文档中节点的方案
十五、设计模式
简单工厂模式
单例模式
观察者模式
装饰模式
模版模式 : 第九天的小项目 game有介绍
迭代器模式: