第一阶段总结 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<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有介绍

迭代器模式:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,604评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,088评论 0 62
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,635评论 0 11
  • 人有思考的能力,真的会帮助到自己。 经常会有婚姻中的女性,因为家庭问题而痛苦不堪,有一天在网上看了篇文章,内容是两...
    酸酸甜甜和阳光阅读 354评论 4 8
  • 今天是下雨的第二天。大雨。渐渐学会了自我调节,渐渐学会了自己开导自己,渐渐学会了吃以前不吃的蔬菜,渐渐学会爱自己。
    刘quanfu阅读 248评论 0 0