人人范文网 范文大全

JAVA(15)总结

发布时间:2020-03-02 03:34:21 来源:范文大全 收藏本文 下载本文 手机版

JAVA(1-5章)知识总结 第一章初识JAVA

一、什么是程序 1.概念

为了让计算机执行某些操作或者解决某个问题而编写的一系列有序的指令的集合

编写程序的工具,计算机语言,java就是其中一种。

2.JAVA发展史

1995年5月23日,Java语言诞生; 1996年1月,第一个JDK-JDK1.0诞生;

1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术; 1996年9月,约8.3万个网页应用了JAVA技术来制作; 1997年2月18日,JDK1.1发布;

1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录;

1997年9月,JavaDeveloperConnection社区成员超过十万; 1998年2月,JDK1.1被下载超过2,000,000次; 1998年12月8日,JAVA2企业平台J2EE发布;

1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版; 2000年5月8日,JDK1.3发布; 2000年5月29日,JDK1.4发布;

2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机; 2001年9月24日,J2EE1.3发布;

2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升;

2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0;

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME;

2006年12月,SUN公司发布JRE6.0;

2009年4月7日Google App Engine开始支持Java;[8] 2009年04月20日,甲骨文74亿美元收购Sun。取得java的版权; 2010年11月,由于甲骨文对于Java社区的不友善,因此Apache扬言将退出JCP; 2011年7月28日,甲骨文发布java7.0的正式版;

2014年3月19日,甲骨文公司发布java8.0的正式版。 太阳微系统(2010年被甲骨文公司收购

3、java的体系结构:

Java ME -->微型版 适用于手机,无线设备的开发 Java SE -->标准版 使用开发客户端程序 java EE -->企业版 适用服务器端程序

4、java语言的特点

1.面向对象

java是纯面向对象的语言 2.跨平台

针对每个操作系统,java都有特定的虚拟机 jvm java虚拟机 什么是jvm? 运行的过程

字节码-----》类装载器---》字节码验证器---》解析器----》执行 java虚拟机

3、java安全性比较高

4、java是简单化的

5、计算机语言机制

解释型:同声翻译,写一句解释一句 c++ Basic语言

编译型:利用专门的编译器针对特定的系统将源文件一次性编译 C语言

java语言两种同时兼备

java语言先将 java 的源文件编译成.cla 文件,此时可以说是 编译型。 在jvm 运行的时候,先将字节码加载到内存中,读出一条指令,解释一条指令,执行一条指令。 解释型

6、JDK和JRE JDK Java Development Kit java开发工具包 JRE Java Runtimes Environment java运行时环境

7、java的环境安装:

下载JDK

安装完成:会生成JDK JRE JDK目录:

bin目录:常用的jdk工具 lib目录:类库

include:一些与C链接时用到的文件 src.zip:源代码的压缩文件

配置环境变量:

指明java 的安装路径

JAVA_HOME: C:\\Program Files\\Java\\jdk1.7.0_21 可以不设置(有可能你把java 的安装目录改了) 指明java虚拟机要用到的类库

CLASS_PATH: %JAVA_HOME%\\lib\\dt.jar;

C:\\Program Files\\Java\\jdk1.7.0_21\\lib\\tools.jar 指明系统在任一路径执行java 的命令 PATH %JAVA_HOME%\\bin

批处理文件:.exe

测试是否配置成功

出现的问题: 找不到无法加载主类

解决办法

在cla_path 中加上.; .表示当前目录 ..表示上一级目录

8、java的运行机制:

1、编写源文件 .java

2、编译源文件 .cla

3、运行 java平台上运行

9:、常见的错误:

1、类名与文件不同

2、引号、分号 ......

10、注释

java注释:

单行注释://dhsajdal 多行注释:/*dsajdksajdksad */ 文档注释:/** dsadada*/ 第二章、JAVA基本语法

1、变量?

电脑使用内存来记忆数据 内存是如何存储的? 会根据不同的数据类型申请不同的内存空间

变量:一个数据存储空间的表示

不同的数据存入 具有不同的内存地址,相互独立的

2、堆栈结构

java中内存分为两种: 一种叫栈内存 堆内存 定义的基本数据类型都是在栈内存中,引用类型的变量 ps: Scanner in = new Scanner(System.in); 堆内存中存放的是new创建的对象或者是数组

2、数据类型

基本数据类型 8种:

整型 byte short int long 1个字节 2个字节 4个字节 8个字节

1byte = 8b

2~8 2^16 65536 2^32 2^64

-2^7 --- 2^7-1 -2^15----2^15-1 -2^31--- 2^31-1 -2^63---2^63-1 字符型 char \\u000 空格

浮点型 float double 4个字节

8个字节 2^32 2^64 -2^31 --- 2^31-1 -2^63---2^63-1 布尔型 boolean true false

8种数据类型的默认值

整型全部是0,boolean为false

引用数据类型 -----------》所有的引用类型的默认值为:null

3、变量的命名规范

1、必须以:$ _ 字母开头

2、不能是用关键字

3、不能有特殊字符

4、首字母最好小写

5、区分大小写

6、驼峰命名 ps: helloWorld

4、数据类型的转换

1、隐式转换(自动类型转换) 小转大:去尾巴

2、显式转换(强制类型转换) 大转小:长尾巴 int b ; float a = 5; b = (int)a;

1)boolean 不能转换成其他类型

2)byte、short、char之间不会互相转换,在计算之前都会转成int byte b= 10; char c = 10;

java运算符

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

2、赋值运算符:= += -= *= /= ++ -- int a; a = 10; System.out.println(a);

a += b; a = a+b;

++ 在前 先+ 再运算 ++ 在后 先运算在+

-- 在前 先- 再运算 ++ 在后 先运算在- ps:

int x = 10; int y = 8;

if((++x>y--)&(--y(y--)){

}

3、关系运算符:> =

4、逻辑运算符:& | ! && || &和&&的区别:

&----》不管boolean值是真还是假,都会把整个表达式执行完 &&---》也叫短路与,一假即为假,表达式不再运行

|和||的区别:

! 取反

5、位运算符:& | ^ ~ >> >> ps: 9&13

& ----- 按位与 只要有0那一位就为0 | ----- 按位或 只要有1那一位就为1 | ----- 异或 相同为0,不同为1 ~ ----- 取反 +1 取反

9>>3

三目运算符:(表达式)?(表达式1):(表达式2)

(表达式)为boolean类型表达式

如果(表达式)结果为true 执行表达式1 否则 执行表达式2

引用数据类型 -----------》所有的引用类型的默认值为:null

第三章、流程控制

控制语句:

1)顺序语句 2)分支语句 3)循环语句

分支语句:

if 和 switch

其中if使用布尔表达式或布尔值作为判断条件来进行分支控制 而switch则用于对整型值或字符串进行匹配,从而实现分支控制

switch (count) {

default:

System.out.println(\"罚写代码\");

break;

case 1:

System.out.println(\"去参加夏令营\");

case 2:

System.out.println(\"奖励一个电脑\");

case 3:

System.out.println(\"奖励笔记本\"); }

循环

循环语句一般包含4部分:初始化语句、循环条件、循环体、迭代语句 while 初始化语句

int count = 0; 循环条件

while (count

System.out.println(\"nihao\"+count);

迭代语句

count++; } for 结构

a b c for(int i = 0; i

a -----> b -------> d ------> c ----> b ----d do{ 循环体

}while(表达式);

while 和 do while的区别 首先,他们都是循环结构。 do while 至少会被执行一次

while是先判断在执行 do while是先执行后判断

break continue 以及 return的区别 用在循环中:

break的作用是跳出当前循环

continue的作用跳出本次循环,执行下一次循环,不再执行continue后面的循环体代码

可以用的返回值 结束当前方法

第四章、数组

1.概念 1)数组是用来存储一组相同数据类型的数据

2)在数组中,他的类型是唯一。也就是说在一个数组中,只能存储同一种类型的数据

3)声明一个变量的时候是在内存中开辟一块空间,申明数组就是在内存中申请一串连续的空间

4)数组中保存任意数据类型(基本数据类型、引用数据类型) 数组也是一种数据类型-------->引用数据类型

1、数组中的数据称为元素

2、不管有多少个元素。数组只有一个名字,也就是数组名

3、数组中的元素按照顺序排列编号,即下标

4、数组中的元素可以用下标来访问

5、数组有大小,在创建数组的时候就创建了大小,如果超出了数组的范围(xxx) java.lang.ArrayIndexOutOfBoundsException 数组下标越界异常

2.数组的定义:

ps int a[]; int[] a; 这两种方式仅仅是申明了一个数组变量,所以并没有内存空间来存储数据,此时不能访问这个数组

boolean[] booleanArray; char[] charArray; String[] stringArray; 对象数组

Student[] student

数组的创建:

数组名 = new 数组类型[数组的长度]; ps a = new int[100];

这个数组的下标 : 0~99 数组的下标:0~数组的长度-1 获取数组的长度: 数组名.length a[0] 表示数组的第一个元素 a[99] 表示第一百个元素

数组的初始化:

分为两种: 静态初始化:

ps: int[] a ={1,2,3,4,5}; 动态初始化:

ps: int a = new int[5]; a[0] = 1;

a[1] = 2;

....

a[5] = 6; error: 或者通过循环赋值

数组的应用

1、输入五个人的成绩:求出平均分

2、创建一个数组,求最值

3、排序

Arrays.sort(num);系统提供的工具类Arrays 静态方法sort 默认的是升序排列 冒泡排序

4、数组的拷贝

1)将一个数组变量拷贝给另一个数组的变量,这两个数组的变量指向的同一个数组

2)将一个数组指定的元素,拷贝到另一个数组的指定位置,原数组不会发生改变 System.arraycopy(src, srcPos, dest, destPos, length) 参数一:原数组 参数二:开始下标 参数三:目标数组

参数四:目标数组开始下标 参数五:拷贝的长度

数组的默认值:

基本数据和引用数据类型的默认值是一样的

多维数组: 二维定义:

int[][] a; int[][][] a;

int[][] a = new int[4][]; 当使用new来创建二维数组的时候,不必指定每一维数组的长度,只需要指定最左边的那个就行

多维数组的初始化: 静态初始化:

int[][] a = {{1,2},{1,2,3},{1,2,3,4}}; 动态初始化:

int[][] a = new int[3][]; a[0] = new int[2]; a[1] = new int[3]; a[2] = new int[4];

a[0][0] = 1; String字符串 如何使用字符串? 1)定义初始化字符串 2)对字符串进行操作

注意:

String是一个字符串常量,被创建出来之后不能被修改

ps:String name=\"aa\"; name = name+\"aa\";

怎么样实例化一个String对象呢?

1、通过字符串常量

ps: String str = \"Hello world!\";

2、通过String类提供的构造方法

ps:String str1 = new String(\"Hello world!\"); String str5 = new String(); 定义了一个空字符串

String str5 = new String(bytes, offset, length)将一个byte数组变成一个String字符串

String字符创的应用:

1、字符串的长度

str.length();

2、String

字符创的比较

1)字符串1.equals(字符串2); str1.equals(str2) 这个方法的返回值是:boolean 将逐个比较每一个字符(会比较大小写) 2)字符串1.compareTo(字符串2); int count = str1.compareTo(str2); 方法的返回值是int 将逐个比较相同位置上的字符的Unicode码

如果完全相等方法返回0,如果发现不同的地方停止比较,

如果比较的字符Unicode码大于被比较的,放回一个整数值,反之为负数 3)字符串1.equalsIgnoreCase(字符串2); 忽略大小写的比较

3、字符串的连接

1)使用\"+\"将多个字符串链接到一起

其他数据类型和字符串以\"+\" 连接之后会变成一个字符串 2)字符串1.concat(字符串2);

4、字符串的其他常用方法:

indexOf-----> 从前往后取得查找字符串的下标,如果没有这个字符串,返回-1 str.indexOf(\"a\", 3); 参数二:从第几个下标开始查找

str.lastIndexOf(\"a\"); 从后往前取得查找字符串的下标,如果没有这个字符串,返回-1 str.lastIndexOf(\"a\", 3); str.substring(2);参数是从第n个下标开始截取,返回值为字符串

str.substring(str.length()-3, str.length()-1); 参数为开始位置和结束位置

str.split(\"@\");按照某个字符进行分割,返回一个String[] str.toLowerCase(); 把字符串字母变成小写,返回一个新的字符串 str.toUpperCase(); 大

str.trim(); 去掉字符串前后的空格,返回一个新的字符串

str.replace(\"a\", \"1\");替换 参数就是把旧的字符串替换成新的字符串 str.endsWith(\".java\");是否以指定的字符串结尾,返回值是boolean str.startsWith(\"ac\"); 开头, str.toCharArray(); 把字符串转换成char[] str.charAt(3);将指定位置上的字符取出

--------------- StringBuffer类

和String是相反的。StringBuffer的内容是可以改变 StringBuffer的实例化

StringBuffer sb = new StringBuffer(\"aa\"); 常用方法:

append(\"bb\"); 往缓冲区追加字符串 sb.length();获得长度

sb.insert(2, \"mm\"); 往指定位置追加数据

sb.reverse();将所有字符前后互换。生成一个新的字符串 sb.charAt(2);将指定位置上的字符取出

StringBuffer是线程安全的

在jdk1.5之后出了一个叫StringBuilder类线程不安全 如果不考虑线程问题尽量选择StringBuilder 速度更快 当数据量大的时候选择StringBuilder

System.currentTimeMillis();获取系统当前时间

String 、StringBuffer、StringBuilder的区别?

String是一个字符串常量,被创建出来之后不能被修改,不存在线程安全问题。 如果不考虑线程问题尽量选择StringBuilder 速度更快

当数据量大的时候选择StringBuilder 若数据量不大,而考虑安全性的情况下,选用StringBuffer 第五章、面向对象

面向对象(Object Oriented) 把一个问题的处理过程按照构成问题的事物分解成对象,建立对象的目的不是为了完成整个过程中的一个步骤,而是为了描述某个事物 在整个解决问题的过程中的行为。它不是一种编程语言,而是一种编程方法,一种思维方式。它的三大特性:封装 、继承、多态。

对某一类事物的描述,是抽象的,概念上的定义。对象是实际存在的该类事物的每一个个体,因而也成为实例。

对象

实际的个体。

一、package(包)与import(导入) (一) package的概念

包即是将一些类聚集在一起的一个空间域。 (二)包的命名

包的命名中一般包含组织类型、组织名、项目名、类的分类名。 一般与域名相反如:com.baidu.map; (三)包的作用

就像Windows中使用文件夹给文件分类一样,Java可以使用包将各个类进行分类。

在一个类里面只能有一个package。

注:package必须放在第一句有效代码。 (四)import的作用

在一个类中使用另一个类,而两个类又不在同一个包中时,则需要使用import关键字通知计算机导入所需的类。

import语句应该出现在package语句(如果有)之后、类定义之前。导入类名时,需要写出包括包名在内的完整类名。

注:在一个类里面import可以有多个,import在package之后,类名之前。 (五)import的两种导入类型机制 (1)单类型导入

如:import java.util.Scanner; 单类型导入仅仅导入import关键字后面的类名所指定的类。 (2)按需类型导入

如:import java.util.*; 它会导入包中所有的类,当然,也包括当前需使用的类。

二、类的封装

(一)概念

封装是面向对象三大特征之一,将对象的属性信息隐藏起来,不准外部程序直接访问。若外部需要访问,则须定义一个公共的方法来访问私有属性 (二)访问修饰符 (1)访问修饰符

public private protected 还有一个默认的什么都不写(有好的:default) (2)作用

访问修饰符可以修饰成员变量和方法,也可以修饰类。它限制了被修饰者的使用范围。

(3)访问控制级别

public:任何包中的任何类都可以访问,对外公开,访问级别最高。被public修饰的类、方法、属性可以被所有成员访问。 private:同一个类中可以访问,不对外公开,类的private成员只能被该类的成员访问,访问级别最低。 protected:同一个类,同一个包,子类中可以访问。受保护的,对于子女(子类,可以在其他包中),朋友(同包)来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部cla,protected就变成private。 default:同一个类,同一个包中可以访问。(无修饰符符) 友好的,类的成员没有访问控制修饰符,只有该类的成员和当前包下其他类的成员可以访问。 (三)对属性进行封装

就是将属性私有化,隐藏实现细节。提供公有方法访问私有属性 通过这些公有方法访问私有属性。

三、类的继承

(一)概念

继承也是面向对象的三大特征之一,它是基于现有的类(基类或父类)派生出新的类(派生类或子类)。子类可以有自己特有的方法和属性,也可以在父类方法的基础上去拓展(可以增加新的数据和功能),子类不能选择性地继承父类,子类可以继承父类所有的非私有的属性和方法。

注:子类只可以直接继承一个父类,且父类不能继承子类。 (二)语法

访问修饰符(可不加) cla关键字 字类的类名 extends关键字基类的类名,加上后面的一对大括号。如: cla Dog extends Animal{ } (三)作用

继承有效的减少了重复代码。 (四)方法的重载与方法的重写 (1)方法的重载

⑴前提:在同一个类中。 ⑵概念:同名不同参。

同名:函数(方法)名相同,参数列表不同。 ⑶参数列表不同: ①参数类型不同 ②参数个数不同 ③两者都不同 (2)方法的重写

⑴前提:必须是在有继承关系的基础上进行,子类重写父类的方法。

⑵概念:如果在子类中定义一个方法,其名称、返回类型及参数列表与父类中方法的名称、返回类型及参数完全一样,那么新方法被称做重写(Overriding)旧方法。方法重写又称方法覆盖。

(五)this和super关键字 ⑴this this表示当前活动对象本身,任何一个活动的对象都有一个默认的this指针指向自己。 使用格式:

this.成员变量名; this.成员方法名

this([参数列表]); //构造方法

注:this必须在构造方法的第一句有效代码,且不能在静态中使用 ⑵super super表示当前活动对象的直接父类 使用格式:

super.成员变量名; super.成员方法名

super([参数列表]); //父类的构造方法

注:super必须在构造方法的第一句有效代码,且不能在静态中使用

四、多态

(一)概念

多态,也是面向对象三大特征顾名思义,多种状态。它是指面向对象程序运行时,相同的信息可能会送给多个不同的类型之对象,而系统可依据对象所属类型,引发对应类型的方法,而有不同的行为。 Java中的多态

Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。当它们出现不一致时,就可能出现所谓的多态了。

多态体现在继承过程中也就是说子类和父类的相互类型转换。 子类转换为父类称为向上转型,在创建对象时,对象既可以作为其本身的类进行引用也可以作为其父类型进行引用。也就是说将一个子类对象直接赋值给一个父类的引用变量,这种我们称为向上转型。

父类转换成子类,与向上类型相对应的这个父类对象作为其子类类型的引用时,这时候我们就说父类转换成子类了。父类转换成子类需要强制类型转换。也叫向下转型。

自动进行类型转换父类型 引用变量名=new 子类型(); 调用的方法是子类重写或继承父类的方法 无法调用子类特有的方法 强制类型转换

子类型 引用变量=new 父类类型(); 强转后才能访问子类特有的方法 继承关系的类型关系才能向下转型 A-B-C 其中A是父类,B是它的两个子类。 B-A-B是可以运行的 B-A-C? 经实践发现:语法上没有问题,运行时会出错。 B-A:是把子类B的对象赋值给父类A向上转型 B(A)-C:把父类B转化成子类C 向下转型

子类B是伪装的父类,在编译时没有问题,但是B和C没有继承关系,所以在运行时会出错。

接口(Interface)

implements 一.抽象类 1.概念

用abstract关键字来修饰一个类时,该类叫做抽象类。 若使用抽象类,则必须被继承。

抽象类不能被直接实例化,它只能被继承,作为其它类的超类,这一点与最终类(final类)正好相反 2.格式

abstract cla 类名{ abstract void 方法名(){ } } 3.抽象方法

用abstract关键字来修饰一个方法时,该方法叫做抽象方法。 抽象方法不能有实现的方法体,它必须被重写,定义了抽象方法的类必须是抽象类

⑴抽象方法必须被重写。 ⑵抽象方法只有声明,不能有实现。 ⑶定义了抽象方法的类必须是抽象类

4.作用

很多时候,父类只能明确子类有哪些行为(方法),但是不能准确的知道子类是如何做的。

二、接口 1.概念

只具有抽象方法的抽象类

三、接口的特点

接口不能被类继承(extends),只能被类实现(implements); 一个类可以实现多个接口;

实现接口的为抽象类。类必须实现接口中的所有方法。

在类中实现接口中定义的方法时,不能比接口中定义的方法有更低的访问权限。因此,被实现的接口方法必须用public修饰。 格式

访问修饰符 Interface 接口名{ } 接口也可像定义类一样实现继承,但接口只能继承接口,不能继承任何类。接口是多继承的。

访问修饰符 Interface 接口名 extends 父借口名1,父借口名2 ...{ } 7.接口的成员变量必须被初始化,成员方法只能有声明不能有实现。

四、接口的实现

[修饰符] cla 类名 extends 父类名 implements 接口1, 接口2„{ //实现接口的方法 } 1.接口是可以被“多实现”的,一个类可以实现多个接口;

2.接口的实现不影响类的继承,接口的实现使用implements关键字; 3.接口之间的继承使用extends,而不是implements。

五、抽象类和接口的区别

1.抽象类可以有实现的方法,也可以有抽象方法,接口只有抽象方法 2.职能的区别:抽象类是作为父类有关联性的,而接口是无关联性 3.抽象类可以继承可以实现,接口只能继承接口

4.有抽象方法的类一定是抽象类,抽象类不是必须有抽象方法

5.非抽象子类必须重新抽象父类中的所有的抽象方法,而抽象子类则不必

六、按值传递和按引用传递的区别

值传递:传递的是副本,本身没发生改变

引用传递:传递的是本身,内外改变是一致的(本质就是传递的内存地址) final修饰的类不能被继承,被其修饰的方法不能被重写,被其修饰的变量的值不能被修改,即为常量。

七、内部类

1.概念 定义在其他类内部的类叫做内部类,也叫嵌入类

内部类是指定在另一个类内部的类,它是java中一种非常有用的特性

2.类型

内部类共包括四种类型:非静态内部类、静态内部类、局部内部类、匿名内部类。最初,它看起来就像是一种代码隐藏机制,但是内部类的作用远不止如此,通过内部类,可以访问外部类的所有私有成员,可以使得代码更加优雅清晰,还使得重继承解决方案更加完整等。 3.格式

cla关键字类名{ cla关键字类名{

} } 4.成员内部类根据访问权限的不同又可以划分为静态内部类和非静态内部类。

⑴还有一种特殊的内部类叫做匿名内部类,这种内部类比较特殊它仅仅适合被使用一次的类。也就是说在程序运行中仅仅被使用一次即刻消亡。 必须继承一个父类或一个借口

⑵非静态内部类:无static修饰的内部类。

⑶静态内部类(类内部类):被static修饰的内部类 ⑷局部内部类:定义在成员方法中的内部类,不能使用static或访问控制符修饰。局部内部类不能用访问控制符来修饰如public、private也不能用static来修饰。同理局部内部类不能在外部类以外的地方使用。 对于局部成员而言,无论是局部变量或者是局部内部类他们的上一级程序都是方法或代码块,而不是类。所以局部成员的作用域仅仅是所在的方法或代码块。其他的程序单元也就不能访问到它们。

5.静态内部类的使用

外部类.内部类 类名=new 外部类.内部类();

Jsp&Servlet(Java)总结

Java 正则表达式总结

Java格式总结

java工程师年度总结

java双语教学总结

Java线程编程总结

JD for Java

java的SSH框架总结

JAVA 内部类的简单总结

某java实训个人总结

JAVA(15)总结
《JAVA(15)总结.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题 场站工作总结 java
点击下载本文文档