java基础知识笔记.docx

上传人:b****1 文档编号:14062389 上传时间:2023-06-20 格式:DOCX 页数:20 大小:58.18KB
下载 相关 举报
java基础知识笔记.docx_第1页
第1页 / 共20页
java基础知识笔记.docx_第2页
第2页 / 共20页
java基础知识笔记.docx_第3页
第3页 / 共20页
java基础知识笔记.docx_第4页
第4页 / 共20页
java基础知识笔记.docx_第5页
第5页 / 共20页
java基础知识笔记.docx_第6页
第6页 / 共20页
java基础知识笔记.docx_第7页
第7页 / 共20页
java基础知识笔记.docx_第8页
第8页 / 共20页
java基础知识笔记.docx_第9页
第9页 / 共20页
java基础知识笔记.docx_第10页
第10页 / 共20页
java基础知识笔记.docx_第11页
第11页 / 共20页
java基础知识笔记.docx_第12页
第12页 / 共20页
java基础知识笔记.docx_第13页
第13页 / 共20页
java基础知识笔记.docx_第14页
第14页 / 共20页
java基础知识笔记.docx_第15页
第15页 / 共20页
java基础知识笔记.docx_第16页
第16页 / 共20页
java基础知识笔记.docx_第17页
第17页 / 共20页
java基础知识笔记.docx_第18页
第18页 / 共20页
java基础知识笔记.docx_第19页
第19页 / 共20页
java基础知识笔记.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java基础知识笔记.docx

《java基础知识笔记.docx》由会员分享,可在线阅读,更多相关《java基础知识笔记.docx(20页珍藏版)》请在冰点文库上搜索。

java基础知识笔记.docx

java基础知识笔记

Corejava整理笔记

训练营:

1、inta=0;a=a++;-a的结果是0

执行顺序是:

inttmp=a;a=a+1;a=tmp;

尝试计算:

a=(a++)+(++a)+(a++);

2、Linux系统(山寨版得unix)

-只有一个跟/

-把其它介质(USB,CD)映射到目录,这个目录叫做挂载点

-命令以/开头是觉得路径

-pwd

-ls–al

-cd

-cp

-mkdir

-rm–r

-mv

-chmod

-vi的使用

3、JDK

---JAVADevelopmentTools

---JRE

---JAVASEAPI

---JVM

4、图形编程实例:

JFrameHelloWorld.java

WEEK_1_1

1、使用变量必须要手动初始化(赋值)

--注意默认初始化和手动初始化的不同

--使用长变量名,如果有多个单词,后面的首字母要大写

2、变量的作用域

--变量的作用于与声明变量所在的大括号内相同

3、有关二进制

---计算机内部都是二进制

---计算机默认接受十进制转化为二进制,默认输出十进制

---二进制的转换,-----基数-----权数

4、有关十六进制

十六进制实际是2进制的简写形式

0x4e2d--0100111000101101

5、JAVA数字包装类的的进制转换

---Integer.toBinaryString()

---Integer.toHexString()

---Integer.toOctalString()

6、八种基本数据类型(4整数、2浮点、char、boolean)

7、关于数据溢出

---Byte.MAX_VALUE=0X7F

---Short.MAX_VALUE=OX7FFF

---Integer.MAX_VALUE=0X7FFFFFFF

---int的常量,在byte范围内,能对byte赋值

--bytea=1;shorta=30000;

---变量不能够转换为byte,例如

---inta=1;byteb=a+1;//错误byteb+=1;//正确,因为这是赋值操作

6、浮点数

---float(32位)1位符号位,8位阶数,23位值

---double(64位)1位符号位,11位阶数,52位值

结论(精度):

long>double>int>float

7、十进制小数表打我二进制浮点数的时候,会出现不能精确除尽的问题

doublea=2.0–1.9;doublea=2.0–1.5

doubleb=0.1doubleb=0.5;

a==b?

//不等a==b?

//相等

这是因为2.0和1.5转换为二进制都能被除尽,因此不存在数据丢失

而1.9是不能被除尽的

8、字符数unicode的编码值,如’中’—>20013、0x4e2dchar是16位无符号整数

‘A’65-0x0041

9、转义字符:

---‘\’’‘\\’‘\b’‘\n’‘\u’‘\r’‘\u0000’是字符串的结束符

10、强制类型转换

11、方法调用

WEEK_1_2

1、运算符

---数学运算

---关系运算==!

=<>>=<=

---位运算~(取反码)&(按位与)|(按位或)^(异或)>><<等

---布尔逻辑运算&&||?

:

------数学运算

----数据溢出(上溢出)

inta=0x7fffffff;intb=0x0x7fffffff

intc=a+b;//c=-2

----运算精度问题(下溢出)

Inta=5;intb=a/2;//b=2;

----时间的获取

longnow=System.currentTimeMillis();//获取从1970到现在经过的毫秒数

----取余运算

---负数的取余结果是负数

---整数部分产生一个周期性的运算

---想要获取一个[0,n)之间的整数,需要取余a%n

---字符串的运算

字符串重载了加法,因此能够直接相加减,如下例:

”1”+“1”+“1”-111

1+”1”+“1”-111

1+1+“1”-21

1+1+1-3

1+1+‘1’-51

“HELLO”+‘1’+‘1’-HELLO11

---短路的逻辑运算(运算两侧不一定会都被执行)&&||!

非短路的逻辑运算(非短路运算是为了保证运算两侧都一定被执行)&|

---条件运算符

(条件运算符)?

结果1:

结果2

2、if…..else…

3、switch(整数或者char){}//注意贯穿的break和不贯穿的break

4、for(…;…;…){//循环体}

WEEK_1_3

1、while(……){//…}do{//……..}while(….);

---案例:

等额本金还款

2、数组Array

---int[]arr=newint[3];//int[]arr=newint[]{};//带有new的动态初始化

---int[]arr={3,2,1};//静态初始化,只能用在数组的声明的时候

3、数组的复制与数组长度的拓展

---Arrays.copyOf()

---System.arraycopy()

---arr=Arrays.copyOf(arr,arr.length()+1);

---案例:

文字竖排

WEEK_1_4

1、选择排序

2、冒泡排序

3、插入排序

4、系统的排序算法Arrays.sort()---内部采用了快速排序

排序性能比较:

快速排序>插入排序>选择排序>冒泡排序

---性能测试的方法

longstart=System.currentTimeMillis();

//…测试代码块

longend=System.currentTimeMillis();

System.out.println(end-start);

5、递归Recursion

----堆栈的知识

案例:

双色球

WEEK_1_5

Tips:

向一个连续的数组连续的添加元素的简单形式:

a[i++]=element;

案例:

生成四位不重复的验证码

1、UNIX/LINUX

---绝对路径:

以/开始的为绝对路径/root/tarena

---.当前路径..上一级~个人主目录

---cd后面什么都不加=cd~回到个人主目录

---命令格式

---command[-选项][参数]ls-a~

---以.开头的是隐藏文件如mkdir.aa创建一个隐藏文件夹.aa

---ls-l---授权信息r/w/x

---创建者权限---同组内用户---其他用户

---管道流|将前一个命令的结果传递到后一个命令

---例如:

ls–al|more

---文件夹的大小都是4096

---chmod命令(改变文件模式)如:

---chmod–xsd1103去掉此文件的可执行权限x

---chmod+xsd1103加上此文件的可执行权限x

---chmod=xsd1103设置此文件只有可执行权限x

注意:

g----组内用户o---其他用户u----创建者本人

例如:

chmodu=rwx,o-x,g-x创建者rwx,其他人和组内均不可执行

数字权限形式:

Rwx

U111---7

G001-1-------chmod710sd1103

O000-0(自己所有权限,组内可见,其他人不可见不可写)

这种表示方法能够简便的改变文件权限,700,750都很常用

---mv(move)mvaabb(如果bb不存在则重命名,如果存在则一动aa到bb)

---cp(copy)

---cat/more只读方式查看文本文件内容

---grep过滤常常与其它命令组合使用:

catpassword|greproot|more

---rm删除命令(删除文件夹需要递归删除rm–rf递归强制执行)

---echo回显

---echoHello>>~/test.txt重定向标准输出到test.txt文件中

---创建文件touch

---vi的另存为:

w~/aa/test.txt

---打包命令tar-cvf(打包/可视/指定生成目标文件名)例如:

tar–cvfaa.taraa

---释放tartar–xf--默认向当前目录释放

---gzip压缩例如gzipaa会将文件夹aa压缩成aa.gz

---gzip解压例如gzip–d释放.gz文件

---标准zip打包zip-r+文件名.zip+文件1文件2….

---zip的解压过程unzip+.zip文件默认解压到当前目录

---设置环境变量:

--EXPORTPATH=$PATH

---echoPATH

案例:

设计备份脚本backup.sh

Cd~

Mkdirtemp

Cdtemp

Cp~/workspace./temp

Tar–cfworkspace.tarworkspace

Gzipworkspace.tar

Cd~

EchoBackUpsuccess\!

作业:

洗牌

WEEK_1_6:

1、ftp协议:

----ftp是在本地执行命令,并不是在操作远程主机

Lscd?

putmput

2、telnet命令

----telnet是直接操作远程主机的,即远程主机有什么命令都可以执行

本地----(exit)----csh-----(exit)----bash

3、环境变量.profile文件存储了系统环境变量的设置

Source命令可以用于测试编写的脚本

PATHCLASSPATH

3、关于JDK

|---bin开发工具(javac/java/jar….)

|---jrejava运行环境(JAVARUNTIMEENVIRONMENT)

||---bin(JVM)

||---lib(JAVAAPI核心类库)

|||---rt.jar(核心类库,zip压缩)、

|---src.zip(javaAPI的源文件)

4、系统拓展java命令的方式

---shell.class的组合使用,另外注意配置环境变量

5、Jar打包jar–cvfjar–xf

清明节作业:

五子棋

WEEK_2_3(面向对象的程序设计OOP)

1、面向对象(ObjectOrientedOO)------everythingisobject

2、类Class

3、类的修饰符:

同类中同一package其它package子孙类

Public1111

Private1000

Protected1001

Default(默认)1100

默认是default的修饰符

4、new运算:

创建实例对象,new运算将返回一个对象的引用

(关于内存/堆/栈/池)

引用不是对象、对象是存在堆内存中的,引用是栈内存中的指向堆内存某对象或者null的指针

5、编译错误(Compileerror)和运行异常(RunTimeException)

6、构造器(构造方法)constructor

类=构造器==实例对象

构造器与类名必须一致

构造器引用类得其它构造器,需要将其放在第一行

方法签名的概念:

方法名+参数列表

7、this的关键词

---this是对当前对象的引用

---this是运行过程中产生的代表当前对象的引用,操作结束后这个临时引用将被释放

---this用来简化构造器例如:

this()调用本类空构造器

8、java的参数传递规则:

---java的参数传递均是基于值的复制(因此基本类型是复制值,引用类型是复制引用)

TIPs:

由于引用传递参数会使传入参数改变,因此建议结果都是有返回值带回,能够避免错误

作业:

圆的类:

圆心、半径、点是否在圆内

WEEK_2_4

1、复习总结:

对于java中值传递的规则进一步理解:

Java中的数据传递都是基于值得复制,是程序栈中值得复制,(栈中基本数据类型数据的值就是其真实值,而引用类型的值是其地址值),另外java不直接操作堆中对象,而是通过栈中的引用来操作对象,因此如果有多个引用同时指向同一个对象,其中任何一个引用对该对象的改变均会改变这个对象,而表现出其他引用也跟着改变。

2、继承(extends关键字)

--子类一定调用父类的构造器

---子类默认调用父类的空构造器

---如果父类中没有空构造器,必须调用有参数的构造器

---调用父类构造器使用super()方法,必须在构造器的第一行书写

要求:

所有类都提供无参数构造器,以减少子类继承时产生的调用构造器的错误

3、关于实例化对象的过程:

---按需加载需要使用的类

---递归加载所有的父类

---通过CLASSPATH查找类文件

---加载以后是一个对象,类型是Class

细节步骤:

1、在堆内存中分配对象空间,递归的先分配父类空间再分配子类空间

2、执行属性的赋值

3、递归调用父类的构造器,先构造父类,再构造子类

JAVABEAN规范:

1、类必须声明在包中

2、必须具有无参数构造器

3、有getXxx()和setXxx()方法,其中boolean方法可以按照isXxx()

4、必须实现序列化接口

----方法覆盖

---子类重新实现父类的方法(方法名和参数列表一样)叫做方法的覆盖,覆盖以后,会动态的调用子类的方法

---所谓:

方法是动态绑定的,属性是静态绑定的,

举例来说:

父类A中有属性a和方法fun

子类B中也有属性a和方法fun

Atest=newB();

调用的时候test.a是A中的a而不是子类中的a,而test.fun()是子类B的方法,这种现象称为方法的动态绑定。

4、类型转换

---子类-父类(小范围--大范围),可以隐式的自动转换

---父类-子类(大范围--小范围)需要强制转换

一般在做强制转换是需呀进行类型检查:

Booleanb=ainstanceofA;

类型转换实际是对对象引用的改变而不是改变对象本身,再次注意引用和对象的区别,类型转换转换的是引用的类型而不改变对象

多态的概念,用父类的引用指代子类对象:

Aa=newB();

5、包装类Integer/Long….的自动装箱与拆箱

作业:

选择题,单选题、多选题

WEEK_2_5

1、static关键字

---修饰属性

---修饰方法

---静态代码块

---修饰内部类---静态内部类

2、final关键字

final修饰的变量只能够被初始化一次,之后就不能再发生改变,但引用内部的引用是可以改变的,例如:

char[]buf=newchar[]{‘a’,’b’};buf[0]=‘b’;//是正确的

注意final和static容易混乱

3、abstract关键字,修饰抽象类抽象方法

4、接口interface(implements实现接口)

周六案例:

账号管理系统

WEEK_3_1

1、关于this关键字和super关键字的详解

如右图所示:

This在搜索是,从Coo开始查找,没有则继续向上查找,直到Object

Super搜索是从Boo开始查找,直到Object,第一个找到的即时最终的值

则:

This.a=6;

Super.a=3;

这也是“属性是静态绑定”的体现

2.、关于hashCode()方法equals()方法

Equals()方法的标准模式:

PublicBooleanequals(Objectobj){

If(obj==null)returnfalse;

If(obj==this)returntrue;

If(objinstanceofA){

Return//….

}

Returnfalse;

}

2、字符串的API

----concat()字符串拼接

----toUpperCase()和toLowerCase()

----Stringsubstring()字符串截取

----intindexOf()和lastIndexOf()

----startWith()和endsWith()

----toCharArray()

3、关于JAVA的常量优化的概念

----java在编译时,将能够运算出结果的常量进行先运算在编译;

----字符串常量的管理采用字符串池进行管理,池中相同的(equals)的元素指向同一个对象

例如:

Strings1=“123abc”;Strings2=”123”+”abc”;

S1和s2是指向同一个对象的,即s1==s2;

然而Strings3=s1+””;并不是与s1相同的,因为s1是变量,不会再编译时进行常量优化,因此运行是s3时堆内存中新分配的一个对象引用

Strings4=newString(“123abc”);//这句语句产生的s4与常量池中的abc是不一样的,因为new关键字总是在堆内存中开辟新对象返回新的引用

4、关于正则表达式

.匹配单个字符

$匹配行结尾

^匹配行开始

[c1-c2]匹配c1-c2中任何值

\d\w{a1,a2}{a1,}{a1}{1,}+{0,}*|?

5、String类支持正则表达式的API

Match()-boolean

replaceAll()-String

split()---String[]

6、StringBuilder类----StringBuffer

7、重载的概念-----覆盖的概念

WEEK_3_2

1、线性表(List)java.util.List类

2、关于插入排序、选择排序、冒泡排序和系统提供的快速排序(Arrays.sort())

WEEK_3_3

1、Arrays.asList(array)

2、HashMap和Hashtable

3、迭代Iterator接口(Collection都实现了)

Listls=newArrayList();

Iteratorit=ls.iterator();

While(it.hasNext()){

Objecto=it.next();

//…..

}

迭代期间可以使用it.remove()方法删除元素,而采用collection.remove()是会引起异常的

4、集合关系图:

 

 

 

理解清楚集合之间的关系,熟练使用ArrayList和HashMap即可

5、泛型(Generic)

6、Java.util.Collections工具类

----Collections.sort()方法,允许重载比较器

---Collections.shuffle()打乱整个集合,允许自定义compareTo(Ta)方法

----binarySearch()折半法查找

7、包装类:

八种基本数据类型均有对应的类,如果String一样,包装类对象也采用常量池优化的方法

包装类得装箱和拆箱操作

包装类提供了相应数据类型的工具方法:

---toBinaryString()…..

----Integer.parseInt();例如:

charch=(char)Integer.parseInt(“4e2d”,16);

WEEK_3_4

1、关于hashMap的迭代

A、foreach()

B、Sets=hm.keySet();

Iteratorit=s.iterator();

While(it.hasNext()){

Hm.getValue(it.next());

//..

}

C、Map.entry方式迭代,不解释

2、内部类:

A、静态内部类staticclass

B、成员内部类

C、局部内部类

D、匿名内部类

其中,匿名内部类由于其语法灵活,而广泛的使用在接口和抽象类得临时实现上,能够实现运行时的方法回调(callback)

3、Date类

4、Calender类

Long-------------------Date-----------Calender

底层的基础表示和显示方便计算方便

几种时间的转换:

不解释

5、时间的格式化输入与解析:

SimpleDateFormat类

WEEK_3_5

1、常见的几种异常:

不解释

2、异常处理原则,不解释

3、异常(Exception)和错误(Error),错误,程序不能够在回到正常状态,而异常能够经过处理使程序回到正常状态,例如堆栈溢出错误,空指针异常

4、Java.IO

A.File类,目录属性,增删改插操作

B.文件的递归遍历

C.RandomAccessFile类,随机文件存储类

Rf.seek();rf.read();rf.write();

注意控制好文件的游标位置

D.InputStream----OutputStream(字节流)

Reader-----Writer(字符流)

InputStreamReaderOutputStreamWriter(字符流和字节流之间的转换)

节点流

|

过滤流

E.按行读取文本BufferedReaderin;in.readLine();

F.写入文本:

PrintWriterout;out.println();

理解流的模型,大道成也。

WEEK_4_1

1、对象序列化Serializzble接口

2、ObjectInputStream--------ObjectOutputStream

3、文本序列化(字符编码的问题)

Gbk编码:

支持中文和英文,采用变化的编码,1-2字节

其中英文1B,中文2B,支持2W

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2