java知识梳理

Java知识梳理

一、java概述

1991年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌,在有线电视交换盒、PDA等的微处理器;1994年将Oak语言更名为Java。

1、Java三种技术框架

JavaEE企业应用开发

JavaSE 桌面应用环境开发

JavaME 开发电子消费产品和嵌入式设备

 

2、运行环境

JDKJava Development Kit  java开发工具

JRE:  Java  Runtime Environment  java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)

3、环境变量配置

JAVA_HOME=%安装路径%\java\jdk

Path=%JAVA_HOME%\bin;

4 javaDos命令

  Javac 负责编译,启动编辑器编辑.java源文件接着生成.class的字节码文件

  Java负责运行,启动jvm加载所运行类库,并对class文件执行

5、虚拟机

在虚拟机中进行软件评测时,可能系统一样会崩溃,但可以使用Undo恢复

 

二、  java语法基础

1、  关键字:赋予特殊含义的单词

2、标识符:自定义的程序名称 0-9,a-z, $,_  

1),数字不可以开头。

   2),不可以使用关键字。

2、常量

3、 变量

4、 基本数据类型

1)  基本数据类型8:byte,intshort,long,float,double, char,boolean级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double

2)  引用数据类型3种:数组,类,接口。

3)  自动数据类型转换,从低级到高级自动转换。

4)  强制类型转换:从高级道低级的转换。

5、  运算符号

1)  算术运算符:+- * / %

+连接符

++自增

--自减

2)  赋值运算符:+= -= /=  *=  %=

3)  比较运算符

 结果布尔类型true或者false

4)  逻辑运算符:! &&  ||

5)  位运算符:用于操作二进制位的运算符。

6、  语句

1If语句

2If-else语句

3)switch语句

switch(变量){

   case 值:要执行的语句;break;

  

   default:要执行的语句;

}

break:作用于switch,和循环语句,用于跳出,或者称为结束。

continue:只作用于循环结构,继续循环用的。

7、  函数

1)定义

为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数

      2)格式

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){

      执行语句;

      return返回值;

            }

 

8、  数组

   1)定义:

用于存储同一类型数据的容器,好处下表从零开始用于封装数据,就是一个具体的实体。

             2)格式:

                        元素类型【】变量名=new元素类型【元素个数】

                元素类型【】变量名={元素1,元素2...} 

                元素类型【】变量名=new元素类型【】{元素1,元素2…}

                                           

3)java分了5片内存。

1寄存器。2本地方法区。3方法区。4栈。5堆。

栈:存储的都是局部变量 (函数中定义的变量,函数上的参数,语句中的变量 );

    只要数据运算完成所在的区域结束,该数据就会被释放。

堆:用于存储数组和对象,也就是实体。啥是实体啊?就是用于封装多个数据的。

1每一个实体都有内存首地址值。

2堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。

3垃圾回收机制

三、 面向对象

1、面向对象的特点

1):将复杂的事情简单化。

2):面向对象将以前的过程中的执行者,变成了指挥者。

3):面向对象这种思想是符合现在人们思考习惯的一种思想。

2、构造函数

  函数名称与类名称相同,不需要返回值类型,没有具体的返回值。创建所有对象时,必须初始化才能使用。

3、封装:面向对象的特征之一,

指隐藏对象的属性或实现的细节,仅对外提供公共的访问方式

4this:代表对象。就是所在函数所属对象的引用

this对象后面跟上 . 调用的是成员属性和成员方法(一般方法);

this对象后面跟上 ()调用的是本类中的对应参数的构造函数。

5static键字,是一个修饰符,用于修饰成员(成员变量和成员函数)。被静态修饰的成员,可以直接被类名所调用。

6、编辑器格式

/**     //格式

*类描述

*@author 作者名

*@version 版本号

*/

/**

*方法描述

*@param  参数描述

*@return  返回值描述

7承(面向对象特征之一)

1:提高了代码的复用性。

2:让类与类之间产生了关系,提供了另一个特征多态的前提。

    8final特点:

1:这个关键字是一个修饰符,可以修饰类,方法,变量。

2:被final修饰的类是一个最终类,不可以被继承。

3:被final修饰的方法是一个最终方法,不可以被覆盖。

4:被final修饰的变量是一个常量,只能赋值一次。

9、 抽象类: abstract

  抽象类只声明定义方法,不能实现,不可以创建对象。

  子类继承抽象类并覆盖了抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类

 

10、     接口 interface

  接口中包含的成员,最常见的有全局常量、抽象方法

                注意:接口中的成员都有固定的修饰符。

    成员变量:publicstatic final

    成员方法:public abstract

类与类之间存在继承关系,类与接口之间存在实现关系

继承用extends ;实现用implements

接口都用于设计上,设计上的特点:

1:接口是对外提供的规则。

2:接口是功能的扩展。

3:接口的出现降低了耦合性。

11、 多态(面向对象特征之一)

   对某一事物具有不同的实现,提高程序的扩展性,只能访问父类的方法,不能访问子类中的方法;父类引用或者接口的引用指向了自己的子类对象。

12、 静态函数

1) Object所有类的直接或者间接父类,具备所有类的功能。

2) boolean equals(Object obj)用于比较两个对象是否相等,其实内部比较的就是两个对象地址。

3) String toString()将对象变成字符串。

4) Class getClass()获取任意对象运行时的所属字节码文件对象。

5) int hashCode()返回该对象的哈希码值

13、 异常

  Throwable可抛出的。

1) Error错误,一般是jvm发生的,程序修改正。

2) Exception 异常,可以有针对性的处理方式。

处理方式有两种:1、捕捉;2、抛出。

try{

 需要被检测的代码;

 

}cath(异常类变量名){

  异常处理代码;

}finally{

  一定会执行的代码;

}

退出jvm:System.exit(0);

3)常见异常

            1、脚标越界异常(IndexOutOfBoundsException)包括数组、字符串;

2空指针异常(NullPointerException

3、类型转换异常:ClassCastException

4、没有这个元素异常:NullPointerException

5、不支持操作异常;

4)Package

    注意:包名的写法规范:所有字母都小写

包与包之间访问可以使用的权限有两种:

1:public

2:protected:只能是不同包中的子类可以使用的权限。

3:private只能在类中使用。

            常见软件包

java.lang : language java的核心包,Object System  String Throwable jdk1.2版本后,该包中的类自动被导入。

java.awt :定义的都是用于java图形界面开发的对象。

javax.swing: 提供所有的windows桌面应用程序包括的控件,比如:Frame , Dialog, Table, List 等等,就是java的图形界面库。

java.net :用于java网络编程方面的对象都在该包中。

java.io : input  output用于操作设备上数据的对象都在该包中。比如:读取硬盘数据,往硬盘写入数据。

java.util : java的工具包,时间对象,集合框架。

java.applet: application+let客户端java小程序。server+let  -->  servlet 服务端java小程序。

jar java的压缩包,主要用于存储类文件,或者配置文件等。

14、 多线程

15、 同步:★★★★★             

//就是在操作共享数据代码时,访问时只能让一个线程进去访问,此线程执行完退出后,别的线程才能再对此共享数据代码进行访问。

好处:解决了线程安 全问题。Synchronized

弊端:相对降低性能,因为判断锁需要消耗资源,产生了死锁

16、   StringBuffer字符串缓冲区:★★★☆

1:可以对字符串内容进行修改。

2:是一个容器。

3:是可变长度的。

4:缓冲区中可以存储任意类型的数据。

StringBuffer和 StringBuilder 的区别:

StringBuffer线程安全。

StringBuilder线程不安全。

单线程操作,使用StringBuilder效率高。

多线程操作,使用StringBuffer安全。

17、集合框架

      --< java.util >-- Collection接口:

Collection

   |--List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。

   |--Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。

1,添加:

    add(object):添加一个元素

    addAll(Collection):添加一个集合中的所有元素。

2,删除:

    clear():将集合中的元素全删除,清空集合

    remove(obj):删除集合中指定的对象。注意:删除成功,集合的长度会改变。

    removeAll(collection):删除部分元素。部分元素和传入Collection一致。

3,判断:

    booleancontains(obj):集合中是否包含指定元素。

    booleancontainsAll(Collection):集合中是否包含指定的多个元素。

    booleanisEmpty():集合中是否有元素。

4,获取:

    intsize():集合中有几个元素。

5,取交集:

    boolean retainAll(Collection):对当前集合中保留和指定集合中的相同的元素。如果两个集合元素相同,返回flase;如果retainAll修改了当前集合,返回true。

6,获取集合中所有元素:

    Iterator  iterator()迭代器

7,将集合变成数组:

    toArray();

--<java.util >-- Iterator接口:

迭代器:是一个接口。作用:用于取集合中的元素。

 boolean

hasNext()  如果仍有元素可以迭代,则返回 true

 E

next()   返回迭代的下一个元素。

 void

remove()  从迭代器指向的 collection中移除迭代器返回的最后一个元素(可选操作)。

 

 

 

 

--<java.util >-- List接口:

List本身是Collection接口的子接口,具备了Collection的所有方法。现在学习List体系特有的共性方法,查阅方法发现List的特有方法都有索引,这是该集合最大的特点。

List有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。

   |--ArrayList底层的数据结构是数组,线程不同步,ArrayList替代了Vector,查询元素的速度非常快。

   |--LinkedList底层的数据结构是链表,线程不同步,增删元素的速度非常快。

   |--Vector底层的数据结构就是数组,线程同步的,Vector无论查询和增删都巨慢。

1,添加:

    add(index,element):在指定的索引位插入元素。

    addAll(index,collection):在指定的索引位插入一堆元素。

2,删除:

    remove(index):删除指定索引位的元素。 返回被删的元素。 

3,获取:

    Objectget(index):通过索引获取指定元素。

    int indexOf(obj):获取指定元素第一次出现的索引位,如果该元素不存在返回-1

                   所以,通过-1,可以判断一个元素是否存在。

    intlastIndexOf(Object o):反向索引指定元素的位置。

    List subList(start,end):获取子列表。

4,修改:

    Objectset(index,element):对指定索引位进行元素的修改。

5获取所有元素

    ListIterator listIterator():list集合特有的迭代器。

List集合支持对元素的增、删、改、查。

List集合因为角标有了自己的获取元素的方式: 遍历。

for(int x=0; x<list.size(); x++){

  sop("get:"+list.get(x));

}

ListIterator是List集合特有的迭代器

ListIteratorit = list.listIterator;//取代Iterator it = list.iterator;

 

 

 

方法摘要

 void

add(E e)将指定的元素插入列表(可选操作)。

 boolean

hasNext()以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。

 boolean

hasPrevious()如果以逆向遍历列表,列表迭代器有多个元素,则返回 true

 E

next()返回列表中的下一个元素。

 int

nextIndex()返回对 next 的后续调用所返回元素的索引。

 E

previous()返回列表中的前一个元素。

 int

previousIndex()返回对 previous 的后续调用所返回元素的索引。

 void

remove()从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。

 void

set(E e)用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。

 

阅读到此>--< java.util >-- Set接口

数据结构:数据的存储方式;

Set接口中的方法和Collection中方法一致的。Set接口取出方式只有一种,迭代器

 

Map集合:

|--Hashtable底层是哈希表数据结构,是线程同步的。不可以存储null键,null值。

|--HashMap底层是哈希表数据结构,是线程不同步的。可以存储null键,null值。替代了Hashtable.

|--TreeMap底层是二叉树结构,可以对map集合中的键进行指定顺序的排序。

Map中的存储的一对元素:一个是键,一个是值,键与值之间有对应(映射)关系。

特点:要保证map集合中键的唯一性。

1,添加。

 put(key,value):当存储的键相同时,新的值会替换老的值,并将老值返回。如果键没有重复,返回null

  void putAll(Map);

2,删除。

  void clear():清空

  value remove(key):删除指定键。

3,判断。

  boolean isEmpty()

  boolean containsKey(key):是否包含key

  boolean containsValue(value):是否包含value

4,取出。

  int size():返回长度

  value get(key):通过指定键获取对应的值。如果返回null,可以判断该键不存在。当然有特殊情况,就是在hashmap集合中,是可以存储null键null值的。

  Collection values()获取map集合中的所有的值。

5想要获取map中的所有元素

  原理:map中是没有迭代器的,collection具备迭代器,只要将map集合转成Set集合,可以使用迭代器了。之所以转成set,是因为map集合具备着键的唯一性,其实set集合就来自于map,set集合底层其实用的就是map的方法。

·        把map集合转成set的方法:

 Set keySet();

 Set entrySet();//取的是键和值的映射关系

 6、增强for循环:

foreach语句,foreach简化了迭代器。

格式:// 增强for循环括号里写两个参数,第一个是声明一个变量,第二个就是需要迭代的容器

for(元素类型 变量名 : Collection集合 & 数组 ) {

  …

}

18、日期

API--- java.util.Date日期类,月份从0-11

 将日期字符串转换成日期对象:使用的就是DateFormat方法中的  Date parse(String source

API--- java.util. Calendar日历类

19IO流:★★★★★,用于处理设备上数据。在流中一般以字节的形式存放着数据!IO流最终要以对象来体现,对象都存在IO包中。


 

 

猜你喜欢

转载自blog.csdn.net/qq_34771946/article/details/78448356