《疯狂JAVA讲义》李刚上课笔记_第1页
《疯狂JAVA讲义》李刚上课笔记_第2页
《疯狂JAVA讲义》李刚上课笔记_第3页
《疯狂JAVA讲义》李刚上课笔记_第4页
《疯狂JAVA讲义》李刚上课笔记_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章到第十二章

dayOlJava开发前奏(第1章)

IT行业

硬件

-各种硬件,技术含量越高,价格越贵。

软件

-瞧不到,摸不着。

软件比硬件值钱得多!!!

iPhone5-5000

制造成本400块一一其她在品牌,在软件。

美国几乎不造硬件一一硬件不如软件挣钱。

程序一一软件得核心部分

程序:当我们要做一件事情时,需要按一种既定得流程、步骤,依次完成每个过程,

——最后结果就出来了。

真正得程序员,会影响她得生活习惯,做所有事情,都会有计划,有步骤。

计算机程序:驱动机器去为我们按既定流程、步骤去完成某件事情。

=======计算机就是很蠢得!它只会按我们规定得步骤去做事=======

Java能做什么?

1、做桌面软件。一一针对个人。

Java在桌面软件领域、并不流行。

MS,win8向“移动操作系统”转型。

2、大型信息化系统。(Java最擅长)一一针对企业。

taobao(阿里软件)、各种银行系统、证券、电信、移动……

3、移动互联网软件。一一针对个人。

Android

编程语言得运行机制

程序:驱动机器去为我们按既定流程、步骤去完成某件事情。

能直接驱动计算机得一一机器指令。(难度非常大)

f汇编一高级语言(C、Java.......)

高级语言编程:源代码就像“作文”一样,容易编写。

但高级语言得源代码,机器瞧不懂,但人容易瞧懂、容易编写。

学编程得所有工具安装准则:

1、不要安装在有空格得路径下。

2、不要安装在有中文得路径下。

(1)安装JDK、

(2)既然要使用Java开发,经常需要使用javac、java命令。

执行计算机命令得两个方法

A。每次运行命令时,都输入该命令得绝对路径。

——可行,坏处就是麻烦。

B。告诉系统,总就是到某些目录下去找命令。

这就需要PATH环境变量:它得值就是N条路径。中间以分号隔开。

用于告诉操作系统,以后操作系统要找命令时,就依次在这N条路径中找,

如果找到了,操作系统就执行这些命令。

如果没找到,操作系统就提示:“不就是内部或外部命令,也不就是可运行得

程序”

PATH环境变量得作用:告诉【操作系统】到哪些路径下去找【命令】。

绝对路径:以盘符开始得路径,就就是绝对路径。

c:\abc\t、txt

相对路径:不以盘符开始得路径,就就是相对路径。

abc\t>txt

启动dos窗口,运行fcmd

打开“快速编辑模式”,即可用“右键”完成复制、粘贴。

cd路径进入指定路径。

特殊路径:

\根路径。

、当前路径。>符号前得就就是当前路径。

、、上一级路径。

dir:列出该路径下得所有文件与目录。

切换盘符:直接输入盘符:即可。

Java程序得最小程序单元:类。

要定义类

[修饰符]class〈类名〉

(

)

[修饰符],只能就是publico

Java程序,如果要运行,必须有个入口方法:main方法:

publicstaticvoidmain(String[]args)

(

}

Java源文件得命名规则:

1、文件名必须以、java为后缀

2、如果源文件中定义了public修饰得类,主文件名必须与类名相同。

一个Java源文件,可以包含多个类定义。

但一个Java源文件最多只能包含一个public修饰得类。

编译Java程序得命令:

javac-d目录源文件得文件名

指定将生成得新文件放在哪里。

javac生成得新文件名得命名规则:类名、class

(每个类,对应一个class文件)

运行Java程序得命令:

java类名

关于CLASSPATH环境变量得解释:

1、CLASSPATH环境变量可以不设置。

2、CLASSPATH环境变量得作用?

CLASSPATH环境变量得作用:告诉【JVM]到哪些路径下去找【类,

CLASSPATH环境变量得值,依然就是N条路径,路径之间用分号隔开。

3、如果您不设置CLASSPATH环境变量,相当于CLASSPATH得值就是一个点(、)

如果您设置CLASSPATH环境变量,记得要加上一点(、)。

Java程序得注释:

注释得作用:给人(包括自己)瞧得。

注释:对程序本身,不存在任何影响。

建议:总就是为程序添加合适得注释。

注释:还可用于调试程序,可以把程序中某段代码先注释掉。

对于程序员来说,还有一个更重要得能力:排错。

1、先多遇到错误,多解决错误。

2、常见得错误,记下来引起错误得原因。

注释分为3种:

单行注释:〃

多行注释:/**/

文档注释:/***/

——它可用于生成API文档。

作业:

10个类,分别在屏幕上打印不同得形状:三角形、正方形、长方形……

day02数据类型与运算符(第3章)

Java语言得运行机制:

它既想吸收编译型语言得速度快得优点,又想吸收解释型语言“跨平台”得优点

它变成了一个“既需【编译】(平台无关得字节码文件)、又需要JVM得【解释r得

语言。

Java语言得程序,速度快,而且能跨平台。

编译Java程序得命令:

javac-dv目录〉源文件得路径

运行Java程序得命令:

java类名

只要做Java开发,javac、java这两个命令就是必需得。

就是由Oracle得JDK所提供得。

SDK(SoftwareDevelopKits)

JDK(Java得SDK)

开发Java之前得准备:

(1)安装JDK。

JavaforDeveloper(JDK)JRE+各种编译工具。

JavaforYourputer(JRE)

JRE(JavaWRuntimeEnviorment)=JVM+基础类库、程序

(2)由于我们需要使用javac、java命令。

如果不配置环境变量,每次使用javac、java命令时,都需要输入命令得绝对路径。

可以配置PATH环境变量,它得值就是N条路径(以;隔开),以后您输入任何命令时,

操作系统都会在PATH所指定得系列路径中搜索。

Java程序得最小结构单元:类。面向对象。

【C程序得最小结构单元:函数。面向过程】

写Java程序,定义类:

[修饰符]class〈类名>

//入口方法、开始点

publicstaticvoidmain(String[]args)

(

//执行性代码

System、out、println();

)

}

注释:

1、单行注释。〃

2、多行注释。/**/

3、文档注释。/***/

文档注释得作用:

javadoc可以直接提取源代码中文档注释,生成对应得【API文档,

何为API文档?

当我们写了一些类之后,应该为这些类编写“使用说明书”。

javadoc命令:程序员只要在源代码中添加文档注释,javadoc就可以为提取注释,

生成使用说明书【API文档

API文档

包列表区|详细说明区

类列表区I

文本编辑器:notepadsvim(最老牌、经典文本编辑工具)、ultraedit、editplus0

生成API文档得步骤:

(1)在源代码中添加文档注释。

文档注释必须添加在类、方法、field,内部类之前才有效。

——如果您把文档注释放在其她地方,它只能多行注释。

(2)使用javadoc命令:

javadoc-d〈路径〉源文件

变量

-编程就要操作数据。数据就要放在“东西”中。

-变量得作用:“装”一切得数据。通俗理解:可以把变量理解成“瓶子”。

-变量需要有个名字(标识符)。通过该名字即可访问变量

分隔符:

所有得符号,都就是英文符号。

空格、花括号、[]、()、

标识符:(identifier)

名字

一只能由于字母(包括中文字符)、数字、下划线、$组成,其中数字不能开头。

-标识符不能就是Java得关键字或保留字。

关键字:

48个。

2个保留字:(goto、const)------现在还没有使用,也许以后会用。

3个直接量:true、false>nulL就就是值。

这53个都不能作为标识符。

Java语言就是“强类型”得语言:

-所有变量,必须先声明(声明时就必须指定类型)、后使用。

-“什么样得瓶子只能转什么东西”,指定类型得变量,只能装相应类型得值。

Java得数据类型可分为2大类:

-基本类型。

-引用类型。

整型(byte、short>int>long)

浮点型(float、double)

基本类型一字符型(char)

布尔型(boolean)只有2个值:true、false

整型:

byte(l个字节(byte)=8个位(bit))

8个bit表示2得8次方种状态。因此一个bit只能表示256个数。

byte得取值范围:-128~0~127

short(2个字节(byte)=16个位(bit))

16个bit表示2得16次方种状态。能表示65536个数。

short得取值范围:-32768~0~32767

int(4个字节(byte)=32个位(bit))

int得取值范围:负得2得31次方~0~2得31次方-1

long(8个字节(byte)=64个位(bit))

long得取值范围:负得2得63次方~0~2得63次方-1

2得10次方:1024—1K

2得20次方:1M(百万)

2得30次方:1G(十亿)

2得40次方:1T

1、当我们直接给出一个整数值时,它默认就是int型。

系统绝不会把它当成long处理。

2、当我们直接给出一个在指定取值范围内得整数时,系统也可把它当成byte、short

使用。

3、如果您系统把一个整数当成long使用,应该在整数后添加1或L。

数值得下划线用法。

可以在数值中任意添加下划线(_)作为分隔符。

整数一共支持4种表示形式:

10进制值。默认。

16进制Ox或0X开头0〜9、a、b-f(15)

8进制O开头0~7

2进制b或B开头0~1

1231*【进制】得2次方+2*【进制】得1次方+3*【进制】得0次方。

Oxla=1*16得1次方+a*16得0次方=26

整数不能除以0,否则会引发“算术异常:ArithmeticException”

浮点型:

float:4个字节,32位。

doubled个字符,64位。

带小数得数值,就就是浮点型。

-当您直接给出一个带小数得数值时,它默认就是double型。

如果希望当成float使用,应该在数值后添加f或F。

-浮点数支持2种形式:

一给出带小数得数。

一科学计数法。2>11133E3

-浮点型有3个特殊值:

正无穷大Infinty正数除以0,得到无穷大。

・所有正无穷大都相等。

负无穷大-Infinity负数除以0,得到无穷大。

・所有负无穷大都相等。

非数NaN:。除以0,对负数开方等。

非数与任何数都不相等,包括它自己!

字符型

char

Java用就就是Unicode字符集

字符型占2个字节,16位,65536种状态。

一字符型也可以当成无符号整型(0〜65535)(每个字符都有编号)用。

-字符型得值,应该用单引号引起来。

(双引号引起来得就是字符串)。

-字符型有3种形式:

A»字符

B。转义字符。‘\n''\fP50得表3、2

C。直接用字符得Unicode编号。

布尔型

boolean

它只有两个值:true、falseo

数值型:byte、short>int、long、char、float、double

基本类型

布尔型:boolean

字符集

计算机底层、内存中都无法记录字符,它们只能记录010101这种二进制位。

但我们有字符需要保存到计算机中,计算机科学家想了一个办法,给字符编号

计算机底层使用、保存这些字符时,其实用得得这些字符得编号。

——如果给所有字符都编号,这就叫字符集。

所谓字符集:就就是给所有字符编个号。

字符集:保存(写入)文件、恢复(读取)文件用得字符集要一致。

ASCII-每个字符占一个字节,8bit,总共能表示256个字符。

A(65)-Z(65+25)

a(97)-z(97+25)

0(48)-9(57)

GB2312

GBK

GB18030

Unicode:16位、能表示65536个字符。

utf-8、utf-16«

编程:建议使用utf-8字符集。

▲类型转换

☆自动转换

取值范围小得类型,可以自动转换为取值范围大得类型。

(-128-127)(-32768-32767)(-20亿〜20亿)

bytefshort-*int-long—float—double

char

(0-65535)

-所有数值型,都可自动转换为double。

-所有整型,都可自动转换为long。

-所有整型,都可自动转浮点型。

☆强制转换。

当数值类型之间,不能自动转换时就需要进行强制转换。

强制转换得语法格式就是:(类型)

【注意】,强制转换,可能会溢出。

数值得表示形式:

最高位就是符号位,0代表正数;1代表负数。

原码一直接换算得到得2进制码。

反码一把原码,除符号位之外,其她位取反得到反码。

补码一正数得补码就就是源码;负数得补码为反码+1

计算机底层,所有数值都用补码表示。

随机得图形验证码

(1)只要生成一个97〜122(汉字得范围)之间得随机整数

(2)将随机整数,强转为char——这就就是随机字符。

Math类:所有与数学计算相关得算法,都提供了相应得方法。

表达式类型得自动提升

所谓表达式:用运算符,将多个变量、值,串联成“四则混合运算”。

一个表达式,最终也会计算出一个结果,该结果得数据类型,

与整个表达式中等级最高得操作数得数据类型相同。

▲直接量

直接量,就就是在源代码中直接给出得值。

int:20>0x12、12、012

long:IL、23L

float:2、4f

double2、33e2

char:T、'\u2331'

boolean:true、false

String:"helloworld"

▲运算符

☆算术运算符:

+:加法运算符,也就是连接运算符。

-:减法运算符。

*:乘法运算符。

/:除法

%:取余。

++:必须操作【一个】【变量】,让变量得值加1

-:必须操作【一个】【变量】,让变量得值减1

++如果放在变量得前面,就是先将变量加1,再用加1后得值;

如果放在变量得后面,就是先用变量原始得值;将变量加1。

-如果放在变量得前面,就是先将变量减1,再用减1后得值;

如果放在变量得后面,就是先用变量原始得值;将变量减1。

☆赋值运算符

☆位运算符

&:按位与一一当上下两位都就是1,计算结果才就是1、

I:按位或一一当上下两位都就是0,计算结果才就是0;只要有任何一个就是1,结

果就就是lo

八:按位异或一一当上下两位不同,计算结果才就是1、

按位取反(按位非)。直接取反一一只要一个运算数即可。

»:右移,右边移出去得位,将会被直接“砍掉”,左边空出来得位补符号位。

右移N位,相当于除以2得N次方。

«:左移,右边空出来得位就会添加0;

左移N位,相当于乘以2得N次方。

>>>:无符号右移,右边移出去得位,将会被直接“砍掉”,左边空出来得位总就是补0o

移出来得结果总就是正数。

练习:

画出下面计算结果得过程

-12&34

(byte)234;

-3八34

20|-124

〜45

day03流程控制与数组(第4章)

数据类型与运算符

Java数据类型可分为2大类:

-基本类型

-引用类型

基本类型

Ao整型byteshortintlong

有4种表示形式:

10进制、8进制(以0开头)、16进制(以0X或Ox开头)、2进制(以B或

b开头、Java7才支持)

B»浮点型。float(4个字节)、double(8个字节)

直接给出小数,默认就是double类型;如果希望一个数字就是float类型,需要添

加f/F作为后缀。

Co字符型。

字符型可以当成无符号整型使用(0-65535)

字符型有3种表示形式:

-直接给出单个字符'A'

-转义字符。

「\uXXXX',用4位得16进制得Unicode值。

D»布尔型。

true>false

另外一种分类规则:

Ao数值型:byte、short>int、long、char>float、double

Bo布尔型:boolean

7个数值型之间可以相互转换,

-自动转换:取值范围小得、向取值范围大得转换,就可自动转换。

bytefshortfint—long->float->double

/

char

-强制转换:不能自动转换时,就需要进行强制转换。

语法格式就是:(类型)

【强制转换可能导致溢出!!!!!!】

运算符:

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

赋值运算符:=

位运算符:&|人~(左边高位补符号位,右移N位相当于除以2得N次方)、<<(左

移N位相当于乘以2得N次方)、»>

▲扩展后得赋值运算符:

所有【双目】运算符,都可以与=结合,结合成为扩展得赋值运算符。

a+=b相当于a=(a得类型)(a+b)

a-=b

、、、

a&=b

▲比较运算符

比较运算符,返回得结果就是true或false

>>=<<===!=

[比较运算符得返回值总就是boolean值!]

▲逻辑运算符

逻辑运算符得作用就是:对两个boolean值进行逻辑运算。

逻辑运算符,只能对boolean值进行运算。

&&:与。当两个操作数都就是true时、才返回true。

&:不短路与。

II:或。当两个操作数只要有一个就是true时、就会返回true。

I:不短路或

!:非:它就是单目得。相当于取反。

A:异或。当两个操作数相同时,结果就会返回falseo

&&与&得区别何在?

对于“求与”来说,当第一个操作数已经就是false时、结果肯定就是false,第二个操作

数根本不会影响结果。

&&,根本不会去计算第二个操作数。

&,它依然会去计算第二个操作数。

II与I得区别何在?

对于“求或”来说,当第一个操作数已经就是true时、结果肯定就是true,第二个操作

数根本不会影响结果。

II,根本不会去计算第二个操作数。

I,它依然会去计算第二个操作数。

▲三目运算符

boolean表达式?value1:value2

当boolean表达式返回true,整个表达式返回valuel;否则,就返回value2

▲运算符得结合性与优先级

运算符有优先级,一共分成10多个级别得优先级。参瞧P67、

规则:尽量多用()来保证哪些东西先算。

▲流程控制

目前,最主流、最常用得3种流程:

1、顺序。从上到下、依次执行每条代码。

如果没有流程控制,默认就就是顺序结构。

在顺序结构中,如果后面代码得到了执行,表明前面代码已经执行完成。

2、分支。

根据条件来执行执行代码。

if语句。

if语句得语法格式:

if(〈逻辑表达式〉)

{

//执行语句

}

{}括起来得部分,称为“条件执行体”。

if(〈逻辑表达式〉)

//执行语句

else

{

//执行语句

if(〈逻辑表达式〉)

//执行语句

}

elseif(〈逻辑表达式〉)elseif块可出现0〜N次。

//执行语句

}

elseelse块可出现0〜1次

//执行语句

★if分支语句得注意点:

A、如果if后得条件执行体只有一行代码,可以省略条件执行体得花括号。

如果if后省略花括号,if条件只控制到紧跟该if语句得第一个分号。

建议:总就是保留条件执行体得花括号。

B、else包含了一个隐含得条件:该条件就就是对前面条件取反。

建议:当有if、、、elseif、、、时候,应该先判断【范围小】得条件。

Java7增强后switch语句,

语法格式就是这样得:

switch(〈表达式〉)//止匕处得表达式可以就是byte、short、char、int、String(Java7)、

枚举

case值1:case块可出现1〜N次

break;

case值2:

break;

case值3:

break;

default://

Java会去计算〈表达式〉得值,如果表达式得值与后面指定case得值相同时,就会

进入执行对应得case代码块。

switch允许省略case块得break;

如果switch省略了case后面break后,从第一个能进入得case块开始,然

后一直执行每个case块得代码(此时根本不判断case后得值),此时根本不会判断case后得值。

3、循环(回圈)

控制程序将一段多次重复执行。

★while循环

while(<逻辑表达式〉)

〃循环体

每次进入循环体之前,会先去判断〈逻辑表达式〉,如果〈逻辑表达式,返回true,

就会进行循环体。

只要逻辑表达式为true,就会一直重复执行循环体。

当〈逻辑表达式>为false时,此时就会跳出循环(执行循环体花括号后面得代

码)。

〈逻辑表达式>得执行次数=循环体得执行次数+1

【注意:】如果while循环得循环体只有一行代码,可以省略循环体得花括号。

如果省略了while循环体得花括号,while只控制紧跟while得第一个分

号。

【练习】用星号打印三角形

*

***

高:N

一共要打印6行。

结论:每行打印得空格数:高度-行数

每行打印得*数:2*行数-1

★dowhile循环

do

{

//循环体

}while(<逻辑表达式>);

先执行循环体,然后再去判断逻辑表达式,如果逻辑表达式为true,执行下一次循

环。

-即使逻辑表达式开始就就是false,循环体也会执行一次。

dowhile循环得循环体至少会执行一次。

-循环体得执行次数=逻辑表达式得执行次数。

★for循环

-【语法更简洁】。

-【内聚性更好】。

for(初始化语句;逻辑表达式;迭代语句)

//循环体

♦初始化语句:仅在循环开始之前,执行一次!

♦逻辑表达式:每次进行循环体之前渚B要先判断逻辑表达式得值。

当逻辑表达式返回true,就会进行循环体。

如果逻辑表达式返回false,跳出循环。

逻辑表达式得执行次数=循环体得执行次数+1

♦迭代语句:每次循环体执行完之后、判断循环条件之前,会自动执行迭代语句。

迭代语句得执行次数=循环体得执行次数

可以用while循环来改写for循环,改写后为如下形式:

初始化语句

while(逻辑表达式)

//循环体

迭代语句

【注意点】

-如果在循环体中修改循环计数器得值,循环体得执行次数可能会发生变

化。

-for循环中,只有两个分号就是必须得。

如果没有逻辑表达式,相当于逻辑表达式总就是true0

-for循环得初始化语句,可以一次声明多个变量。这多个变量得类型必须相

同。

/******死循环:无限循环*******/

课堂练习:打印99乘法表

1*1=1

1*2=2,2*2=4

1*3=3,2*3=6,3*3=9

1*99*9=81

结论:

-总共打印MAX_NUM行

-每行要打得token数量=行数

▲控制循环结构:

break-跳出一个循环。

直接调到循环体得后一条代码。

即使就是死循环,我们也可以使用break来跳出循环。

★默认情况,break只就是跳出它所在得循环。

循环可以带标号一一所谓标号,就就是为循环起个名字。

标号得语法格式为:标识符:一一这就就是为循环起了个名字。

★如果在break后添加标签,可以直接跳出标签代表得循环。

continue-忽略本次循环剩下得语句、重新开始下一次循环。

结论:如果一个【不带标号】得continue语句,而且它就是循环体得最后一条语句,

这个continue语句没有作用。

★默认情况,continue只就是忽略它所在得循环得剩下语句。

★如果在continue后添加标签,可以直接忽略标签所代表循环得剩下语句。

return-可用于结束一个方法。

return无论它在多深得嵌套循环中,只要遇到return语句,它会结束方法,整个循环

将会完全结束。

1、找出2000以内得所有“水仙花”数字

找出2000以内所有

各位得数值得立方得与=该数本身。

比如:153=1+125+27

2、打印圆

(对于有难度,就做将三角形再打个反向,就成了菱形)

**

day04流程控制与数组(第4章)**

Java得流程控制

第一种:顺序结构

如果我们要做得一件事情,本身就是从上到下、按既定得步骤依次执行,

此时就可考虑使用顺序结构。

编程思路:我要得事情,可定义为一个一个小任务,接下来就将每条任务都翻译为相应程

序代码。

第二种:分支结构

如果我们要做得事情,要根据具体得条件来决定就是否执行。

此时就可考虑使用分支结构。

Java得分支结构有两种:

★if

if(条件)

//条件执行体

elseif(条件)----它可以出现0〜N次

//条件执行体

else------它可以出现0〜1次

//条件执行体

}

1、当条件执行体只有一行代码时,程序可以省略条件执行体得花括号。

省略花括号之后,if只控制到紧跟它得第一个分号。

2、else本身就就是一个条件。else相当于就是对前面得条件取反。

经验:当有多个elseif块,您应该先去处理范围小得条件。

★switch

switch(表达式)〃表达式得类型可以byte\short\char\int\String(Java7)\枚举

{

case值1:------可出现1〜N次。

//执行代码

break;

case值2:

//执行代码

break;

default:——隐含条件就是:表达式得值不等于前面任意一个值

【注意点:】

如果省略了break,流程会从第一个能进入得case块开始,依次向下执行每个case

块,根本不会比较case后面得值,

----直到遇到break为止。

第二种:循环结构

如果有一件事情,需要多次重复执行,

此时就考虑使用循环结构。

Java得循环结构,一共有3种:

while(条件)

{

〃循环体

条件得计算次数=循环体得执行次数+1

【注意点:】

当循环体只有一行代码时,程序就可以省略循环体得花括号。

如果省略了循环体得花括号,while只控制到紧跟它得第一个分号。

do

{

〃循环体

}while(条件)

即使条件开始就就是false,循环体也会执行一次循环体至少会执行一次。

for(初始化语句;条件;迭代语句)

//循环体

初始化语句,只在循环开始之前执行一次。

条件,每次进入循环体之前,先要计算条件为true或false。

当条件为true时,才能进入循环体;为false将不能进入循环体。

条件得执行次数=循环体得执行次数+1

迭代语句,每次循环体执行完之后,程序就会执行迭代语句。

迭代语句总就是放在循环体之后执行。

▲数组:

变量-程序中需要保存数据时,就可考虑使用变量来装数据。

变量,需要指定类型、名字。

数组-当程序中有N个数据类型完全相同得变量时,此时就可考虑使用一个数组来

代替这个N个变量。

当有一个数据需要保存时,就考虑使用变量;当有N个数据需要保存时,就考虑使用数

组。

Java数据类型:

-基本类型:8个。

-引用类型:数组类型,类,接口。

8个基本类型、Stringo

★数组就就是一种类型。

int-int□(数组类型)

String-String[](数组类型)

int[]-(数组类型)

int[][]-int口口口(数组类型)

★定义数组变量得语法,应该就是标准写法

int[]变量名

String[]变量名

早期定义数组变量得语法就是:

int变量名口;一一这个写法几乎被淘汰了,

★数组类型得变量,只就是一个引用变量。定义数组变量,仅仅只就是定义了一个指

针。

何为引用变量、何为指针

1、基本类型得值,需要得空间就是固定。

2、引用类型得值,需要得空间就是不确定。

当我们把数据存在计算机得内存中之后,每个内存位都有自己得编号,

可以额外定义一个变量,该变量保存数组所在内存得编号。一一这种变量就叫

“指针”。

引用变量,本质就就是指针。但它就是一个包装后、功能被限制、更安全得

指针。

引用变量、存放得就是内存编号。

引用变量所占得内存空间就是确定、受平台所控制得。

定义数组变量时,数组本身并没有出现。

★创建数组(数组初始化)

new------新建

几乎所有东西,都可以new出来。

创建数组得两种语法:

静态:

new类型口{元素1,元素2,元素3、、、);

1、程序员不指定长度。

2、只列出元素得值;由系统来动态判断数组得长度。

动态:

new类型[长度];

1、程序员只指定长度。

2、不给出数组元素得值,而就是由系统地为每个元素分配元素值。

系统为数组元素分配值得规则为:

1、所有整型,初始值都为0;

2、所有浮点型,初始值都就是0、0

3、所有字符型,初始值都就是‘\u0000'

4、boolean型,初始值就是false

5、所有引用类型,初始值都就是null

★使用数组:

1、数组有一个length属性,用于返回该数组得长度。

2、每个数组元素,相当于一个类型为数组类型去掉【一组】【方括号】得变量。

可通过数组变量[索引]可代表数组元素,功能上相当于变量。

使用数组中两个常见得错误:

-如果使用数组元素时,指定得索引值大于或等于length,将会引发

ArrayIndexOutOfBoundsException。

-当数组变量并未真正指向有效得数组时,,无论访问数组长度、还就是访问数组元

素时,都将引发NullPointException

★foreach循环

专门用于遍历数组、集合得元素

//该循环得执行次数=数组得长度

for(数组|集合【元素】得类型变量:数组变量|集合变量)

//在该循环体内,上面得变量将会依次等于每个数组元素得值。

很明显:foreach循环,遍历数组时更加简洁。

foreach循环遍历数组时,一个最大得限制就是:【在foreach循环中对数组元素赋值

没有任何意义。】

▲数组在内存中运行机制:

数组变量、引用变量一一本质就是一个包装后、功能被限制得、安全得指针。

在方法中声明得变量,只在方法体内有效,都被称为局部(local)变量

局部变量被放在相应得方法栈内存中

方法栈内存,会随着方法栈内存得结束自动销毁。

每个方法,相当于有自己独立得栈区。

所有由new新建出来得对象,统一放在“堆”内存中。

一个JVM,只持有一块堆内存。

“堆”内存,JVM在运行时分配一块总就是存在内存区,JVM退出(java命令结束时),才会

销毁堆内存

▲没有多维数组

任何已有类型、在后面添加一对方括号,就会产生一个新得类型一一数组类型。

int[]-int[][]多维数组

int[][]-int[][][]

String[]fString[][]

、、、

▲操作数组得工具类

Arrays——当我们给一个类、方法等东西起名字时,我们会按全世界大家约定得名

字来起名。

这样保证该程序有更好得可读性。

在JDK中,这种操作Xxx得工具类,一般命名为Xxxso

Arrays包含了如下方法:

binarysearch-二分法查找,要求数组元素就是从小到大排列得。

copyOfRange(long[]original,intfrom,intto):复制数组中间一部分,生成一个新

数组。

fill(byte[]a,byteval):将数组理指定范围内得元素、全部元素填充某个值。

toString():帮助直接瞧到数组中所有得元素。一一这个方法最喜欢。

sort():对数组元素进行排序。

作业:

1、控制台五子棋

2.人民币转换、、、

dayO5Java编程基础实战练习

当我们遇到一个方法,搞不清楚、不懂

——无论您学习任何语言,无论您得技术多么牛,无论您干了多少年,您会一直遇到这

个问题。

心理得优势感:这个问题您一定可以搞定。

学会接受:当您遇到一个方法,学会接受它得功能。

当您不知道它得功能,不确定它得功能一查文档一Google一写

一个helloworld小例子。

新名词:英语名词。汉语名词。

什么就是“桌子”?其实无需知道它就是桌子,还就是老虎。只要知道它

就是个【能干什么、起什么作用】东西。

1、水仙花数

用一个循环,循环控制依次取出1-2000得数,接下来就去判断该数就是否符合我们得要

求。

2、在控制台打印圆

经过总结发现:

-一共打印2R-1行

-每行前面要打印X个空格。

R-R*R-(R-行数)*(R-行数)得开方

接下来要打印Y个星号

2*R*R-(R-行数)*(R-行数)得开方

3、简单课堂练习:

直接选择排序-最简单、最入门得排序算法

2,-12,100,40,20,23,87

第1轮循环,始终用第1数,依次与后面得每个数进行比较

第1轮得第1次,发现顺序颠倒,就交换。

2,-12,100,40,20,23,87

▲▲

-122,100,40,20,23,87

第1轮得第2次,发现顺序颠倒,就交换。

-122,100,40,20,23,87

▲▲

第1轮得第3次,发现顺序颠倒,就交换。

-122,100,40,20,23,87

最小得数到了第一个。

第2轮循环,始终用第2数,依次与后面得每个数进行比较

第2小得数到了第2个

第length-1轮循环,

结束

结论:总共需要N-1轮比较,

第1轮,用第1个数依次与后面得每个数比较。

、、、

第N-1轮,用第N-1个数依次与后面得每个数比较。

4、简单课堂练习:

冒泡排序-相当简单、相当入门得排序算法

2,-12,100,40,20,23,87

第1轮循环,始终用第j个数,与第j+1个数进行比较,如果顺序颠倒,就交换。

第1轮得第1次,发现顺序颠倒,就交换。

2,-12,100,40,20,23,87

▲▲

-12,2,100,40,20,23,87

第1轮得第2次,发现顺序颠倒,就交换。

-12,2,100,40,20,23,87

▲▲

第1轮得第3次,发现顺序颠倒,就交换。

-12,2,100,40,20,23,87

▲▲

-12,2,40,100,20,23,87

第1轮得第4次,发现顺序颠倒,就交换。

-12,2,40,100,20,23,87

▲▲

-12,2,40,20,100,23,87

第1轮得第5次,发现顺序颠倒,就交换。

-12,2,40,20,100,23,87

▲▲

-12,2,40,20,23,100,87

第1轮得第6次,发现顺序颠倒,就交换。

-12,2,40,20,23,100,87

▲▲

-12,2,40,20,23,87,100

循环一轮之后,最大得数到了最后面。

第2轮循环,始终用第j个数,与第j+1个数进行比较,但最后1个数不需要参与比较。

第3轮循环,始终用第j个数,与第j+1个数进行比较,但最后2个数不需要参与比较。

第N-2轮循环,始终用第j个数,与第j+1个数进行比较,但最后N-2个数不需要参与比较。

【特征:如果某一轮循环,从未发生过交换,说明已经提前排好顺序了,可以退出。】

5、复杂得课堂练习:

任意给出N个字符:5,6,a,x,y

要求得到这些字符所有可能得组合情况(不允许重复)56axy、65axy

第一轮:先只排【一个】字符:N种情况

5

6

a

x

y

将这一轮结果放入数组,该结果数组得长度为:No

第2轮:先只排【2个】字符:

前一次每个结果(用到了一个字符),因此还可依次与N-1字符组合。

总共将会组合出:N(前一次得结果数量)*(N-1)

将这一轮结果放入数组,该结果数组得长度为:N*(N-1)„

第3轮:先只排【3个】字符:

前一次每个结果(用到了2个字符),因此还可依次与N-2字符组合。

总共将会组合出:上一次数组得长度*(N-2)

将这一轮结果放入数组,该结果数组得长度为:N*(N-1)*(N-2)o

、、、

第N轮:先只排【N个】字符:

前一次每个结果(用到了N-1个字符),因此每个结果还可依次与1字符组合。

将这一轮结果放入数组,该结果数组得长度为:N*(N-1)*(N-2)*、、、1。

6、五子棋

判断输赢:

1、将每行得状态“连接”起来,将会得到一个长度为15个字符串。

判断该字符串中就是否包含(contains)•••••、或就是否包含OOOOO

7、简单得

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论