一、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 for(int j = 0;j //第一个依次往后进行比较,大的或小的放最后 } } 选择排序: for(int i=0;i for(int j =i+1;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有介绍 迭代器模式: