第一阶段总结 Java

一、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有介绍

迭代器模式:

你可能感兴趣的:(第一阶段总结 Java)