java各知识点详细总结.docx
- 文档编号:29947837
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:25
- 大小:43.59KB
java各知识点详细总结.docx
《java各知识点详细总结.docx》由会员分享,可在线阅读,更多相关《java各知识点详细总结.docx(25页珍藏版)》请在冰豆网上搜索。
java各知识点详细总结
Java知识
第1章
一、java概述
1、java发展:
1991年Sun公司的JamesGosling等人开始开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;
1994年将Oak语言更名为Java;
2、Java的三种技术架构:
JAVAEE:
JavaPlatformEnterpriseEdition,开发企业环境下的应用程序,主要针对web程序开发;
JAVASE:
JavaPlatformStandardEdition,完成桌面应用程序的开发,是其它两者的基础;
JAVAME:
JavaPlatformMicroEdition,开发电子消费产品和嵌入式设备,如手机中的程序;
3、JDK:
JavaDevelopmentKit,java的开发和运行环境,java的开发工具集和jre。
4、JRE:
JavaRuntimeEnvironment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
5、配置环境变量:
Path:
操作系统外部命令搜索路径
Classpath:
类文件搜索路径“.”表当前目录
6、javac命令和java命令
要知道java是分两部分的:
一个是编译,一个是运行。
javac:
负责的是编译的部分,当执行javac时,会启动java的编译器程序。
对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节码文件,也就是class文件,也就是java的运行程序。
java:
负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行。
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main方法.
7、虚拟机
当我们在虚拟机中进行软件评测时,可能系统一样会崩溃,但是,崩溃的只是虚拟机上的操作系统,而不是物理计算机上的操作系统,并且,使用虚拟机的“Undo”(恢复)功能,可以马上恢复虚拟机到安装软件之前的状态。
8、publicclass和class
●publicclass:
文件名称和类名称一致,一个*.java文件之中只能够存在一个publicclass定义。
ava文件之中可以同时存在多个class定义,并且编译之后会形成不同的*.class文件。
第2章java语法基础
1、关键字:
某种语言赋予了特殊含义的单词。
保留字:
还没有赋予特殊含义,但是准备日后要使用的单词。
2、标示符:
就是在程序中自定义的名词。
比如类名,变量名,方法名。
包含0-9、a-z、$、_;
注意:
1)数字不可以开头。
2)不可以使用关键字。
3、常量:
是在程序中不会变化的数据。
4、变量:
其实就是内存中的一个存储空间,用于存储数据。
作用:
方便运算。
因为有些数据不确定,所以确定该数据的名字和存储空间。
特点:
变量空间可以重复使用。
什么时候定义变量只要是数据不确定的时候,就定义变量。
变量空间的开辟需要什么要素呢
(1)数据类型。
(2)变量名称。
(3)变量的初始化值。
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中有生命了;
变量到达它所在的作用域的时候就在内存中消失了;
5、数据类型:
1)基本数据类型:
byte、short、int、long、float、double、char、boolean
2)引用数据类型:
数组、类、接口。
级别从低到高为:
byte,char,short(这三个平级)-->int-->float-->long-->double
自动类型转换:
从低级别到高级别,系统自动转换;
强制类型转换:
什么情况下使用把一个高级别的数赋给一个比该数的级别低的变量;
格式:
类型变量名=(类型)表达式;
例:
inta=(int)100L;
6、运算符号:
1)算术运算符。
+-*/%%:
任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
+:
连接符。
++,--
2)赋值运算符。
=+=-=*=/=%=
3)比较运算符。
特点:
该运算符的特点是:
运算完的结果,要么是true,要么是false。
4)逻辑运算符。
&|^!
&&||
逻辑运算符除了!
外都是用于连接两个boolean类型表达式。
&:
只有两边都为true结果是true。
否则就是false。
|:
只要两边都为false结果是false,否则就是true
^:
异或:
两边结果一样,就为false。
两边结果不一样,就为true.
&和&&区别:
&:
无论左边结果是什么,右边都参与运算。
&&:
短路与,如果左边为false,那么右边不参数与运算。
|和||区别:
|:
两边都运算。
||:
短路或,如果左边为true,那么右边不参与运算。
5)位运算符:
用于操作二进制位的运算符。
&|^
<<>>>>>(无符号右移)
7、语句
Ifswitchdowhilewhilefor
1)当判断固定个数的值的时候,可以使用if,也可以使用switch。
但是建议使用switch,效率相对较高。
.};
元素类型[]变量名=new元素类型[]{元素1,元素2...};
第3章面向对象
一、在类中的定义都称之为成员。
成员有两种:
1、成员属性:
对应的就是事物的属性。
2、成员方法:
对应的就是事物的行为。
必须先要对事物进行属性和行为的分析,才可以用代码来体现。
注意:
主方法的存在,仅为该类是否需要独立运行,如果不需要,主方法是不用定义的。
主方法的解释:
保证所在类的独立运行,是程序的入口,被jvm调用。
成员属性和局部变量的区别:
1、成员属性直接定义在类中。
局部变量定义在方法中,参数上,语句中。
2、成员属性在这个类中有效。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
3、成员属性存在于堆内存中,随着对象的产生而存在,消失而消失。
局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。
二、构造方法:
用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,方法中的一种。
特点:
1、该方法的名称和所在类的名称相同。
2、不需要定义返回值类型。
3、该方法没有具体的返回值。
记住:
所有对象创建时,都需要初始化才可以使用。
注意事项:
一个类在定义时,如果没有定义过构造方法,那么该类中会自动生成一个空参数的构造方法,为了方便该类创建对象,完成初始化。
如果在类中自定义了构造方法,那么默认的构造方法就没有了。
一个类中,可以有多个构造方法,因为它们的方法名称都相同,所以只能通过参数列表来区分。
所以,一个类中如果出现多个构造方法。
它们的存在是以重载体现的。
构造方法和一般方法有什么区别呢
1、两个方法定义格式不同。
2、构造方法是在对象创建时,就被调用,用于初始化,而且初始化动作只执行一次。
调用的是成员属性和成员方法(一般方法);
this对象后面跟上()调用的是本类中的对应参数的构造方法。
注意:
用this调用构造方法,必须定义在构造方法的第一行。
因为构造方法是用于初始化的,所以初始化动作一定要执行。
否则编译失败。
五、static:
关键字,是一个修饰符,用于修饰成员(成员属性和成员方法)。
特点:
1、想要实现对象中的共性数据共享。
可以将这个数据进行静态修饰。
2、被静态修饰的成员,可以直接被类名所调用。
也就是说,静态的成员多了一种调用方式。
类名.静态方式。
课();
电影();A11y=(A11)x;
y.看电影();名
编译命令:
javac–d位置(.当前路径)java源文件(就可以自动生成包)
包是一种封装形式,用于封装类,想要被包以外的程序访问,该类必须为public;
类中的成员,如果被包以外访问,也必须public;
包与包之间访问可以使用的权限有两种:
1、public
2、protected:
只能是不同包中的子类可以使用的权限。
总结java中的四种权限:
范围publicprotecteddefaultprivate
同一个类中okokokok
同一包中okokok
子类ok
不同包中ok
-----------------------------------------------------------------------------------------------
Import-导入:
类名称变长,写起来很麻烦。
为了简化,使用了一个关键字:
import,可以使用这个关键字导入指定包中的类。
记住:
实际开发时,到的哪个类就导入哪个类,不建议使用*.
importpacka.*;;ar包目录
解压缩:
jar–xvf包名.jar
将jar包目录列表重定向到一个文件中:
jar–tf包名.jar>c:
\
和import.*的形式的小技巧。
-----------------------------------------------------------------------------------------------
第4章
一、异常:
★★★★
异常:
就是不正常。
程序在运行时出现的不正常情况。
其实就是程序中出现的问题。
这个问题按照面向对象思想进行描述,并封装成了对象。
因为问题的产生有产生的原因、有问题的名称、有问题的描述等多个属性信息存在。
当出现多属性信息最方便的方式就是将这些信息进行封装。
异常就是java按照面向对象的思想将问题进行对象封装。
这样就方便于操作问题以及处理问题。
出现的问题有很多种,比如角标越界,空指针等都是。
就对这些问题进行分类。
而且这些问题都有共性内容比如:
每一个问题都有名称,同时还有问题描述的信息,问题出现的位置,所以可以不断的向上抽取。
形成了异常体系。
:
Throwable:
可抛出的。
|--Error:
错误,一般情况下,不编写针对性的代码进行处理,通常是jvm发生的,需要对程序进行修正。
|--Exception:
异常,可以有针对性的处理方式。
无论是错误还是异常,它们都有具体的子类体现每一个问题,它们的子类都有一个共性,就是都以父类名作为子类的后缀名。
这个体系中的所有类和对象都具备一个独有的特点;就是可抛性。
可抛性的体现:
就是这个体系中的类和对象都可以被throws和throw两个关键字所操作。
------------------------------------------------------
classExceptionDemo{
publicstaticvoidmain(String[]args){
.
这样标示后,调用者,在使用该功能时,就必须要处理,否则编译失败。
处理方式有两种:
1、捕捉;2、抛出。
对于捕捉:
java有针对性的语句块进行处理。
try{
需要被检测的代码;
}
catch(异常类变量名){
异常处理代码;
}
fianlly{
一定会执行的代码;
}
--------------------------------------------------------
catch(Exceptione){etName()+'@'+(hashCode())
为了对象对应的字符串内容有意义,可以通过复写,建立该类对象自己特有的字符串表现形式。
publicStringtoString(){
return"person:
"+age;
}
3、ClassgetClass():
获取任意对象运行时的所属字节码文件对象。
4、inthashCode():
返回该对象的哈希码值。
支持此方法是为了提高哈希表的性能。
将该对象的内部地址转换成一个整数来实现的。
通常equals,toString,hashCode,在应用中都会被覆写,建立具体对象的特有的内容。
------------------------------------------------------------------------------------------------
--<>--String字符串
java中用String类进行描述。
对字符串进行了对象的封装。
这样的好处是可以对字符串这种常见数据进行方便的操作。
对象封装后,可以定义N多属性和行为。
如何定义字符串对象呢Strings="abc";只要是双引号引起的数据都是字符串对象。
特点:
字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。
------------------------------------------------------
Strings1="abc";Stringsubstring(intstart,intend);法名:
不用建立对象,直接类名调用;
将基本类型转成字符串:
Integer中的静态方法StringtoString(int);
将一个十进制整数转成其他进制:
转成二进制:
toBinaryString
转成八进制:
toOctalString
转成十六进制:
toHexString
toString(intnum,intradix);
将其他进制转换十进制:
parseInt(string,radix);
|--TreeMap:
底层是二叉树结构,可以对map集合中的键进行指定顺序的排序。
Map集合存储和Collection有着很大不同:
Collection一次存一个元素;Map一次存一对元素。
Collection是单列集合;Map是双列集合。
Map中的存储的一对元素:
一个是键,一个是值,键与值之间有对应(映射)关系。
特点:
要保证map集合中键的唯一性。
1、添加。
put(key,value):
当存储的键相同时,新的值会替换老的值,并将老值返回。
如果键没有重复,返回null。
voidputAll(Map);
2、删除。
voidclear():
清空
valueremove(key):
删除指定键。
3、判断。
booleanisEmpty():
booleancontainsKey(key):
是否包含key
booleancontainsValue(value):
是否包含value
4、取出。
intsize():
返回长度
valueget(key):
通过指定键获取对应的值。
如果返回null,可以判断该键不存在。
当然有特殊情况,就是在hashmap集合中,是可以存储null键null值的。
Collectionvalues():
获取map集合中的所有的值。
5、想要获取map中的所有元素:
原理:
map中是没有迭代器的,collection具备迭代器,只要将map集合转成Set集合,可以使用迭代器了。
之所以转成set,是因为map集合具备着键的唯一性,其实set集合就来自于map,set集合底层其实用的就是map的方法。
★把map集合转成set的方法:
SetkeySet();
SetentrySet();Calendar:
日历类
publicstaticvoidmethod(){
Calendarc=();
"年"++1)+"月"
+getNum)+"日"
+"星期"+getWeek));
}
publicstaticStringgetNum(intnum){
returnnum>9num+"":
"0"+num;
}
publicstaticStringgetWeek(intindex){
/*
查表法:
建立数据的对应关系.
最好:
数据个数是确定的,而且有对应关系。
如果对应关系的一方,是数字,而且可以作为角标,那么可以通过数组来作为表。
*/
String[]weeks={"","日","一","二","三","四","五","六"};
returnweeks[index];
}
------------------------------------------------------------------------------------------------------------------------------------------------
第六章IO流
流:
可以理解数据的流动,就是一个数据流。
IO用于处理设备上数据。
在流中一般以字节的形式存放着数据。
IO流最终要以对象来体现,对象都存在IO包中。
IO异常的处理方式:
IO一定要写finally;
流的分类:
1、输入流(读)和输出流(写)。
2、因为处理的数据不同,分为字节流和字符流。
字节流:
处理字节数据的流对象。
设备上的数据无论是图片或者dvd,文字,它们都以二进制存储的。
二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。
意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据。
为什么要有字符流呢因为字符每个国家都不一样,所以涉及到了字符编码问题,那么GBK编码的中文用unicode编码解析是有问题的,所以需要获取中文字节数据的同时也指定的编码表才可以解析正确数据。
为了方便于文字的解析,所以将字节流和编码表封装成对象,这个对象就是字符流。
只要操作字符数据,优先考虑使用字符流体系。
注意:
流的操作只有两种:
读和写。
流的体系因为功能不同,但是有共性内容,不断抽取,形成继承体系。
该体系一共有四个基类,而且都是抽象类。
即:
字节流:
InputStreamOutputStream
字符流:
ReaderWriter
在这四个系统中,它们的子类,都有一个共性特点:
子类名后缀都是父类名,前缀名都是这个子类的功能名称。
流对象:
其实很简单,就是读取和写入。
但是因为功能的不同,流的体系中提供N多的对象。
那么开始时,到底该用哪个对象更为合适呢这就需要明确流的操作规律。
流的操作规律:
1,明确源和目的。
数据读取:
InputStream、Reader;
数据写入:
OutputStream、Writer;
2,操作的数据是否是纯文本数据
如果是:
数据读取:
Reader
数据写入:
Writer
如果不是:
数据读取:
InputStream
数据写入:
OutputStream
3,虽然确定了一个体系,但是该体系中有太多的对象,到底用哪个呢
明确操作的数据设备。
数据输入对应的设备:
硬盘(File),内存(数组),键盘
数据输出对应的设备:
硬盘(File),内存(数组),控制台。
--------------------------------------------------------------------------------------------------------------------
字符流:
Reader:
用于读取字符流的抽象类。
子类必须实现的方法只有read(char[],int,int)和close()。
|---BufferedReader:
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。
大多数情况下,默认值就足够大了。
|---LineNumberReader:
跟踪行号的缓冲字符输入流。
此类定义了方法setLineNumber(int)和getLineNumber(),它们可分别用于设置和获取当前行号。
|---InputStreamReader:
是字节流通向字符流的桥梁:
它使用指定的charset读取字节并将其解码为字符。
它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
|---FileReader:
用来读取字符文件的便捷类。
此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。
要自己指定这些值,可以先在FileInputStream上构造一个InputStreamReader。
|---CharArrayReader:
|---StringReader:
-------------------------------------------------
Writer:
写入字符流的抽象类。
子类必须实现的方法仅有write(char[],int,int)、flush()和close()。
|---BufferedWriter:
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
|---OutputStreamWriter:
是字符流通向字节流的桥梁:
可使用指定的charset将要写入流中的字符编码成字节。
它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
|---FileWriter:
用来写入字符文件的便捷类。
此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。
要自己指定这些值,可以先在FileOutputStream上构造一个OutputStreamWriter。
|---PrintWriter:
|---CharArrayWriter:
|---StringWriter:
---------------------------------
字节流:
InputStream:
是表示字节输入流的所有类的超类。
|---FileInputStream:
从文件系统中的某个文件中获得输入字节。
哪些文件可用取决于主机环境。
FileInputStream用于读取诸如图像数据之类的原始字节流。
要读取字符流,请考虑使用FileReader。
|---FilterInputStream:
包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
|---BufferedInputStream:
该类实现缓冲的输入流。
|---Stream:
-----------------------------------------------
OutputStream:
此抽象类是表示输出字节流的所有类的超类。
|---FileOutputStream:
文件输出流是用于将数据写入File或FileDescriptor的输出流。
|---FilterOutputStream:
此类是过滤输出流的所有类的超类。
|---BufferedOutputStream:
该类实现缓冲的输出流。
|---PrintStream:
|---DataOutputStream:
-------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 知识点 详细 总结