配套课件-Java-JDK-6学习笔记_第1页
配套课件-Java-JDK-6学习笔记_第2页
配套课件-Java-JDK-6学习笔记_第3页
配套课件-Java-JDK-6学习笔记_第4页
配套课件-Java-JDK-6学习笔记_第5页
已阅读5页,还剩614页未读 继续免费阅读

下载本文档

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

文档简介

第1章了解Java什么是JavaJava的特性如何学习Java什么是Java最早是Sun公司GreenProject中撰写Star7应用程序的一个程序语言JamesGosling的窗外有颗橡树(Oak)全球信息网兴起,JavaApplet成为网页互动技术的代表1995/5/23,JavaDevelopmentKits(当时的JDK全名)1.0a2版本正式对外发表什么是JavaJava是面向对象(Object-Oriented)程序语言,具有更高的跨平台可能性在今日,更多时候代表了软件开发的架构开发者版本发表时是以JavaDevelopmentKits名称发表,简称JDKJ2SE5.0(Java2PlatformStandardEdition5.0)时的JDK称为J2SEDevelopmentKit5.0

什么是JavaJ2SE5.0(Java2PlatformStandardEdition5.0)时的JDK称为J2SEDevelopmentKit5.0

从JavaSE6(JavaPlatform,StandardEdition6)开始的JDK6则称之为JavaSEDevelopmentKit6不再带有“2”这个号码,版本号6或1.6.0都使用6是产品版本(productversion),而1.6.0是开发者版本(developerversion)Java的特性语言特性简单(Simple)面向对象(Object-oriented)网络(Network-savvy)解译(Interpreted)坚固(Robust)安全(Secure)可携(Portable)高效能(High-performance)Java的特性应用平台JavaSEJavaPlatform,StandardEditionJavaEEJavaPlatform,EnterpriseEditionJavaMEJavaPlatform,MicroEditionJavaPlatform,StandardEdition(JavaSE)Java各应用平台的基础JavaPlatform,StandardEdition(JavaSE)JVMJava虚拟机(JavaVirtualMachine,JVM)JREJava执行环境(JavaSERuntimeEnvironment,JRE)JDKJava语言JavaPlatform,EnterpriseEdition(JavaEE)以JavaSE的基础,定义了一系列的服务、API、协定等适用于开发分布式、多层式(Multi-tiered)、以组件为基础、以Web为基础的应用程序技术像是JSP、Servlet、EnterpriseJavaBeans(EJB)、JavaRemoteMethodInvocation(RMI)等JavaPlatform,MicroEdition

(JavaME)作为小型数字设备上开发及部署应用程序的平台,像是消费性电子产品或嵌入式系统等最为人所熟悉的设备如手机、PDA、股票机等活跃的社群与丰富的资源开发工具开放原始码的组件容器测试工具各式各样的软件专案各个社群所支持的讨论区取之不尽的文件如何学习Java奠定Java语法基础运用基本的JavaSEAPI字符串处理、例外处理、对象容器(Container)、输入输出(I/O)、线程(Thread)/javase/6/docs/api/index.html如何学习Java使用搜索引擎/加入社群参与讨论.tw/学习地图/developer/onlineTraining/new2java/javamap/intro.html第2章入门准备

下载、安装、瞭解JDK设定Path与Classpath第一个Java程序选择开发工具下载JDKJDK6发表日期为2006年12月11日较新的修正版本将以Update名称,加上号码来表示修正的版本号/javase/downloads/index.jsp安装JDK包括公用JRE一定要记得安装JDK一定要记得了解JDK公用JRE是给开发好的程序之执行平台JDK本身也有自己的JRE位于JDK安装目录的「jre」目录下JDK本身所附的JRE比公用JRE多了个server的VM(VirtualMachine)执行选项了解JDKJDK的JRE有server选项了解JDKJDK的安装目录「bin」目录JDK的工具程序「demo」目录范例程序「jre」目录JDK自己附带的JRE「db」目录ApacheDerby数据库,纯Java所撰写的数据库了解JDKJDK的安装目录「lib」目录工具程序实际上会使用的Java工具类别JDK中的工具程序,大多也是由Java所撰写而成bin文件夹下的工具程序,不过是个包装器(Wrapper)执行javac.exe等程序时,最后会呼叫lib目录中tools.jar中的对应类别了解JDKJDK的安装目录src.zipJava提供的API类别之原始码文件压缩档设定Path找不到javac工具程序必须告诉操作系统,应该到哪些目录下尝试找到您所想使用的工具程序设定系统变量中的

Path环境变量设定Path必须告诉操作系统,应该到哪些目录下尝试找到您所想使用的工具程序直接设定目前的环境变量包括Path变数Windows下安装JRE时,会将java.exe复制至「C:\Windows\System32\」路径之下,而这个路径在Path变量中是默认的路径setPath=C:\ProgramFiles\Java\jdk1.6.0\bin;%Path%设定ClasspathJava执行环境本身就是个平台,执行于这个平台上的程序是已编译完成的Java程序设定Path变量是为了让操作系统找到指定的工具程序(例如Windowsexe)设定Classpath目的就是为了让Java执行环境找到指定的Java程序(JVMclass)设定ClasspathJDK6默认会到现行工作目录,以及JDK的「lib」目录中寻找Java程序javac-classpathclasspath1;classpath2…对于Windows操作系统来说,Path是让操作系统可以找到“.exe”执行档的存在对于Java执行环境来说,ClassPath就是让JVM可以找到".class"执行档的存在第一个Java程序第一个Java程序新增一个「文字文件」重新命名文件为「HelloJava.java」第一个Java程序Java的源文件必须以扩展名.java作结束主档名与类别名称必须一致注意每个字母的大小写空白只能是半型空格符或是Tab字符第一个Java程序javacHelloJava.javaerror:cannotread:HelloJava.javajavac工具程序找不到您指定的.java档案HelloJava.java:1:classHelloJavaispublic,shouldbedeclaredinafilenamedHellJava.java类别名称与主档名不符第一个Java程序HelloJava.java:3:cannotfindsymbol程序代码中某些部份打错了,最常发生的原因可能是没有注意到字母大小写‘javac’不是内部或外部命令、可执行的程序或批处理文件

Path设定有误或没有在Path中加入JDK的「bin」目录第一个Java程序javaHelloJavaExceptioninthread"main"java.lang.NoClassDefFoundErrorjava工具程序找不到您所指定的类别Exceptioninthread"main"java.lan.NosuchMethodError:main没有指定Java程序的进入点(Entrypoint),java工具程序指定的类别必须要有一个程序进入点,也就是必须包括main(String[]args)这个方法(method)选择开发工具从简单的文字编辑辅助工具开始UltraEdit(/)Editplus(/)简单的开发环境JCreater(/)BlueJ(/index.html)功能更齐全的IDEEclipse(/)NetBeans(/)第3章语法入门

第一个Java程序文本模式下与程序互动数据、运算流程控制第一个Java程序定义类别(Class)

定义区块(Block)定义main()方法(Method)

撰写陈述(Statement)publicclassHelloJava

{

publicstaticvoidmain(String[]args)

{

System.out.println("嗨!我的第一个Java程序!");}}给C使用者的第一個Java程序给了C使用者类似printf()的功能publicclassHelloJavaForC{publicstaticvoidmain(String[]args){

System.out.printf("%s!这是您的第一个Java程序!\n","C语言Fan");}}System.out.printf("%s!这是您的第二个Java程序!","C语言Fan").println();System.out.printf("%s!这是您的第%d

个Java程序!\n","C语言Fan",3);为程序加入批注原始码档案中被标注为批注的文字,编译程序不会去处理它/*作者:良葛格*功能:示范printf()方法*日期:2005/4/30*/publicclassThirdJavaForC{publicstaticvoidmain(String[]args){

//printf()是J2SE5.0的新功能,必须安裝JDK5.0才能编译

System.out.printf("%s!这是您的第%d个Java程序!\n","C语言Fan",3);}}

为程序加入批注不能用巢状方式来撰写多行批注多行批注可以包括单行批注/*批注文字1……bla…bla/*

批注文字2……bla…bla*/*//*批注文字1……bla…bla//批注文字2……bla…bla*/

使用Scanner取得输入在J2SE5.0中,可以使用java.util.Scanner类别取得使用者的输入可以使用这个工具的next()功能,来取得用户的输入字符串Scannerscanner=newScanner(System.in);System.out.print("请输入您的名字:");System.out.printf("哈啰!%s!\n",scanner.next());System.out.print("请输入一个数字:");System.out.printf("您输入了%d!\n",scanner.nextInt());使用BufferedReader取得输入BufferedReader建构时接受java.io.Reader物件可使用java.io.InputStreamReaderBufferedReaderbufferedReader=newBufferedReader(

newInputStreamReader(System.in));

System.out.print("请输入一列文字,可包括空白:");Stringtext=bufferedReader.readLine();System.out.println("您输入的文字:"+text);标准输入输出串流System类别中的静态物件out提供标准输出串流(Stream)输出通常对应至显示输出(终端机输出)可以将输出重新导向至一个档案javaHelloJava>HelloJavaResult.txtSystem标准输入串流in在程序开始之后它会自动开启,对应至键盘或其它的输入来源标准输入输出串流标准错误输出串流err在程序执行后自动开启,将指定的字符串输出至显示设备或其它指定的装置err会立即显示错误讯息err输出串流的讯息不会被重新导向System.out.println("使用out输出讯息");System.err.println("使用err输出讯息");javaErrDemo>ErrDemoResult.txt使用err输出讯息输出格式控制控制字符作用\\反斜杠\'单引号'\"双引号"\uxxxx以16进位数指定Unicode字符输出\xxx以8进位数指定Unicode字符输出\b倒退一个字符\f换页\n换行\r游标移至行首\t跳格(一个Tab键)System.out.println("\u0048\u0065\u006C\u006C\u006F");输出格式控制若是使用J2SE5.0或更高的版本//输出19的十进制表示

System.out.printf("%d%n",19);//输出19的八进制表示

System.out.printf("%o%n",19);//输出19的十六进制表示

System.out.printf("%x%n",19);格式字符作用%%在字符串中显示%%d以10进位整数方式输出,提供的数必须是Byte、Short、

Integer、Long、或BigInteger%f将浮点数以10进位方式输出,提供的数必须是Float、Double或

BigDecimal%e,%E将浮点数以10进位方式输出,并使用科学记号,提供的数必须是Float、

Double或BigDecimal%a,%A使用科学记号输出浮点数,以16进位输出整数部份,以10进位输出指数部份,提供的数必须是Float、Double、BigDecimal%o以8进位整数方式输出,提供的数必须是Byte、Short、

Integer、Long、或BigInteger%x,%X将浮点数以16进位方式输出,提供的数必须是Byte、Short、

Integer、Long、或BigInteger%s,%S将字符串格式化输出

%c,%C以字符方式输出,提供的数必须是Byte、Short、Character或

Integer%b,%B将"true"或"false"输出(或"TRUE"、"FALSE",使用

%B)。另外,非null值输出是"true",null值输出是"false"%t,%T输出日期/时间的前置,详请看在线API文件

输出格式控制可以在输出浮点数时指定精度System.out.printf("example:%.2f%n",19.234);example:19.23可以指定输出时,至少要预留的字符宽度System.out.printf("example:%6.2f%n",19.234);example:19.23补上一个空白在前端基本的数据型态(Primitivetype)整数短整数(short)(占2个字节)整数(int)(占4个字节)长整数(long)(占8个字节)字节专门储存位数据占一个字节浮点数浮点数(float)(占4个字节)倍精度浮点数(double)(占8个字节)基本的数据型态(Primitivetype)字符

采Unicode编码前128个字符编码与ASCII编码兼容每个字符数据型态占两个字节可储存的字符范围由'\u0000'到'\uFFFF'布尔数占内存2个字节可储存true与false两个数值基本的数据型态(Primitivetype)

System.out.printf("short\t数值范围:%d~%d\n",Short.MAX_VALUE,Short.MIN_VALUE);System.out.printf("int\t数值范围:%d~%d\n",Integer.MAX_VALUE,Integer.MIN_VALUE);System.out.printf("long\t数值范围:%d~%d\n",Long.MAX_VALUE,Long.MIN_VALUE);System.out.printf("byte\t数值范围:%d~%d\n",Byte.MAX_VALUE,Byte.MIN_VALUE);System.out.printf("float\t数值范围:%e~%e\n",Float.MAX_VALUE,Float.MIN_VALUE);System.out.printf("double\t数值范围:%e~%e\n",Double.MAX_VALUE,Double.MIN_VALUE);

变数、常数在Java中要使用变量,必须先宣告变量名称与数据型态使用int、float、double、char等关键词来宣告变量名称并指定其数据型态不可以使用数字作为开头不可以使用一些特殊字符,像是*&^%之类不可以與Java内定的关键词同名intage;//宣告一个整数变量doublescope;//宣告一个倍精度浮点数变量

变数、常数鼓励用清楚的名称来表明变量的作用不可以宣告变量后,而在未指定任何值给它之前就使用它编译程序在编译时会回报这个错误intageOfStudent;intageOfTeacher;variablevarmightnothavebeeninitialized变数、常数使用「指定运算符」'='来指定变数的值intageOfStudent=5;doublescoreOfStudent=80.0;charlevelOfStudent='B';System.out.println("年級\t得分\t等級");System.out.printf("%4d\t%4.1f\t%4c",ageOfStudent,scoreOfStudent,levelOfStudent);变数、常数宣告变量名称的同时,加上“final”关键词来限定这个变量一但指定了值,就不可以再改变它的值finalintmaxNum=10;maxNum=20;cannotassignavaluetofinalvariablemaxNum算术运算加(+)、减(-)、乘(*)、除(/)、余除运算符(%)System.out.println(1+2*3);System.out.println(1+2+3/4);System.out.println((double)(1+2+3)/4);算术运算这段程序会印出什么结果?使用下面的方法inttestNumber=10;System.out.println(testNumber/3);inttestNumber=10;System.out.println(testNumber/3.0);System.out.println((double)testNumber/3);算术运算将精确度大的值指定给精确度小的变量时,由于在精确度上会有遗失,编译程序会认定这是一个错误inttestInteger=0;doubletestDouble=3.14;testInteger=testDouble;System.out.println(testInteger);

possiblelossofprecisionfound:doublerequired:inttestInteger=testDouble^1error算术运算必须明确加上转换的限定字,编译程序才不会回报错误'%'运算符是余除运算符testInteger=(int)testDouble;count=(count+1)%360;比较、条件运算大于(>)、不小于(>=)、小于(<)、不大于(<=)、等于(==)、不等于(!=)System.out.println("10>5结果"+(10>5));System.out.println("10>=5结果"+(10>=5));System.out.println("10<5结果"+(10<5));System.out.println("10<=5结果"+(10<=5));System.out.println("10==5结果"+(10==5));System.out.println("10!=5结果"+(10!=5));比较、条件运算条件运算符条件式?成立传回值:失败传回值System.out.println("该生是否及格?"+(scoreOfStudent>=60?'是':'否'));System.out.println("是否为奇數?"+(number%2!=0?'是':'否'));逻辑、位运算「且」(&&)、「或」(||)、「反相」(!)&(AND)、|(OR)、^(XOR)与~(补码)intnumber=75;System.out.println((number>70&&number<80));System.out.println((number>80||number<75));System.out.println(!(number>80||number<75));

System.out.println("0AND0\t\t"+(0&0));System.out.println("0AND1\t\t"+(0&1));System.out.println("1AND0\t\t"+(1&0));System.out.println("1AND1\t\t"+(1&1));

bytenumber=0;System.out.println((int)(~number));逻辑、位运算左移(<<)、右移(>>)、>>>运算符intnumber=1;System.out.println("2的0次:"+number);number=number<<1;System.out.println("2的1次:"+number);number=number<<1;System.out.println("2的2次:"+number);number=number<<1;System.out.println("2的3次:"+number);00000001

100000010

200000100

400001000

8

递增、递减运算递增、递减运算符将递增或递减运算符撰写在变量之前或变量之后

inti=0;System.out.println(++i);System.out.println(--i);inti=0;intnumber=0;number=++i;//相当於i=i+1;number=i;System.out.println(number);number=--i;//相当於i=i-1;number=i;System.out.println(number);递增、递减运算将递增或递减运算符撰写在变量之前或变量之后

inti=0;intnumber=0;number=i++;//相当於number=i;i=i+1;System.out.println(number);number=i--;//相当于number=i;i=i-1;System.out.println(number);

递增、递减运算指定运算符范例结果+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b&=a&=ba=a&b|=a|=ba=a|b^=a^=ba=a^b<<=a<<=ba=a<<b>>=a>>=ba=a>>bif条件式语法复合陈述句if(条件式)

陈述句一;else

陈述句二;if(条件式){

陈述句一;

陈述句二;}else{

陈述句三;

陈述句四;}if条件式Scannerscanner=newScanner(System.in);

System.out.print("请输入数字:");intinput=scanner.nextInt();intremain=input%2;//求除2的余数

if(remain==1)//如果余数为1System.out.println(input+"为奇數");elseSystem.out.println(input+"为偶數");if条件式if中再设定执行的条件if(条件式一){

陈述句一;if(条件式二)

陈述句二;

陈述句三;}if(条件式一){

陈述句一;//其它陈述句}elseif(条件式二)

陈述句二;if(条件式一){

陈述句一;//其它陈述句

}elseif(条件式二)

陈述句二;if条件式Scannerscanner=newScanner(System.in);

System.out.print("输入分数:");intscore=scanner.nextInt();

if(score>=90)System.out.println("得A");elseif(score>=80&&score<90)System.out.println("得B");elseif(score>=70&&score<80)System.out.println("得C");elseif(score>=60&&score<70)System.out.println("得D");elseSystem.out.println("得E(不及格)");switch条件式switch的语法架构switch(变量名称或表达式){case符合数字或字符:

陈述句一;break;case符合数字或字符:

陈述句二;break;default:

陈述三;}Scannerscanner=newScanner(System.in);System.out.print("请输入分數:");intscore=scanner.nextInt();intlevel=(int)score/10;

switch(level){case10:case9:System.out.println("得A");break;case8:System.out.println("得B");break;case7:System.out.println("得C");break;case6:System.out.println("得D");break;default:System.out.println("得E(不及格)");for循环基本语法for(初始式;判断式;递增式){

陈述句一;

陈述句二;}for(intj=1;j<10;j++){for(inti=2;i<10;i++){System.out.printf("%d*%d=%2d",i,j,i*j);}System.out.println();}for循环for括号中的每个陈述区块是以分号';'作区隔,而在一个陈述区块中若想写两个以上的陈述句,则使用逗号','作区隔for(inti=2,j=1;j<10;i=(i==9)?((++j/j)+1):(i+1)){System.out.printf("%d*%d=%2d%c",i,j,i*j,(i==9?'\n':''));}while循环Scannerscanner=newScanner(System.in);intscore=0;intsum=0;intcount=-1;

while(score!=-1){count++;sum+=score;System.out.print("输入分数(-1结束):");score=scanner.nextInt();}

System.out.println("平均:"+(double)sum/count)while循环Scannerscanner=newScanner(System.in);intinput=0;intreplay=0;

do{System.out.print("输入整数值:");input=scanner.nextInt();System.out.println("输入数为奇数?"+((input%2==1)?'Y':'N'));System.out.print("继续(1:继续0:结束)?");replay=scanner.nextInt();}while(replay==1);break、continuebreak可以离开目前switch、for、while、dowhile的区块continue只会结束其之后区块的陈述句,并跳回循环区块的开头继续下一个循环for(inti=1;i<10;i++){if(i==5)break;System.out.println("i="+i);}for(inti=1;i<10;i++){if(i==5)continue;System.out.println("i="+i);}break、continuebreak与continue还可以配合标签使用back:{for(inti=0;i<10;i++){if(i==9){System.out.println("break");breakback;}}System.out.println("test");}break、continuebreak与continue还可以配合标签使用back1:for(inti=0;i<10;i++){back2:for(intj=0;j<10;j++){if(j==9){continueback1;}}System.out.println("test");}第4章从autoboxing、unboxing认识对象

关于对象自动装箱、拆箱使用对象想写一个程序取得现在的系统时间,您只要产生一个java.util.Date工具就可以了Date实际上如何向系统取得时间,则无需您来操心Datedate=newDate();System.out.println(date.toString());TueMay0316:06:46GMT+08:002005使用对象字符串就是对象,是java.lang.String类别的一个实例Stringtext="Haveaniceday!!:)";

System.out.println("原文:"+text);

//传回全为大写的字符串内容

System.out.println("大写:"+text.toUpperCase());//转回全为小写的字符串内容

System.out.println("小写:"+text.toLowerCase());//计算字符串长度

System.out.println("长度:"+text.length());//传回取代文字后的字符串

System.out.println("取代:"+text.replaceAll("nice","good"));//传回指定位置后的子字符串

System.out.println("子字符串:"+text.substring(5));使用对象简单的用户登入程序System.out.print("使用者名称:");Stringusername=scanner.next();System.out.print("用户密码:");Stringpassword=scanner.next();if("caterpillar".equals(username)&&"1975".equals(password)){System.out.println("秘密信息在此!");}else{System.out.println(username+"您好,输入的登入数据有误,请重新输入!");}包裹(Wrap)基本型态Long、Integer、Double、Float、Boolean等类别是所谓的Wrapper类别主要目的,就是让您提供一个对象实例作为「壳」,将基本型态包到这个对象之中如此您就可以操作这个对象,就好像您将基本型态当作对象一样操作包裹(Wrap)基本型态intdata1=10;intdata2=20;

//使用Integer来包里int资料

Integerdata1Wrapper=newInteger(data1);Integerdata2Wrapper=newInteger(data2);

//直接除以3System.out.println(data1/3);

//转为double值再除以3System.out.println(data1Wrapper.doubleValue()/3);//进行两个值的比较

System.out.println(data1WpareTo(data2Wrapper));包裹(Wrap)基本型态自动装箱、拆箱在J2SE5.0之前,要如下才能将int包装为一个Integer物件在J2SE5.0之后提供了自动装箱的功能Integerinteger=newInteger(10);Integerinteger=10;自动装箱、拆箱Integerdata1=10;Integerdata2=20;

//转为double值再除以3System.out.println(data1.doubleValue()/3);//进行两个值的比较

System.out.println(pareTo(data2));自动装箱、拆箱自动装箱运用的方法还可以如下:更一般化的java.lang.Number类别自动装箱inti=10;Integerinteger=i;Numbernumber=3.14f;自动装箱、拆箱自动拆箱(unboxing)在运算时,也可以进行自动装箱与拆箱IntegerfooInteger=10;intfooPrimitive=fooInteger;Integeri=10;System.out.println(i+10);System.out.println(i++);Booleanboo=true;System.out.println(boo&&false);小心使用boxing自动装箱与拆箱的功能是编译程序来帮忙自动装箱与拆箱的功能是所谓的「编译程序蜜糖」(Compilersugar)Integeri=100;Integeri=newInteger(100);Integeri=null;intj=i;Integeri=null;intj=Value();NullPointerException小心使用boxingIntegeri1=100;Integeri2=100;

if(i1==i2)System.out.println("i1==i2");elseSystem.out.println("i1!=i2");Integeri1=200;Integeri2=200;

if(i1==i2)System.out.println("i1==i2");elseSystem.out.println("i1!=i2");显示"i1==i2"显示"i1!=i2"小心使用boxing‘==’也用于判断两个对象参考名称是否参考至同一个对象在自动装箱时对于值从-128到127之间的值,它们被装箱为Integer对象后,会存在内存之中被重用Integeri1=200;Integeri2=200;

if(i1.equals(i2))System.out.println("i1==i2");elseSystem.out.println("i1!=i2");第5章阵列

一维数组、二维数组进阶数组观念一维数组对象宣告一个数组并初始数组内容指定的索引值不可超出数组范围会发生ArrayIndexOutOfBoundsExceptionlength为数组对象的属性成员int[]score={90,85,55,94,77};

for(inti=0;i<score.length;i++)System.out.printf("score[%d]=%d\n",i,score[i]);一维数组对象当您宣告一个数组时,其实就是在配置一个数组对象一个完整的数组宣告方式如下int[]arr=newint[10];一维数组对象数据型态初始值byte0short0int0long0Lfloat0.0fdouble0.0dchar\u0000booleanfalse一维数组对象int[]arr=newint[10];

System.out.print("arr初始值:");for(inti=0;i<arr.length;i++){System.out.print(arr[i]+"");arr[i]=i;}System.out.print("\narr设定值:");for(inti=0;i<arr.length;i++)System.out.print(arr[i]+"");System.out.println();一维数组对象在使用new新增数组时一并指定初始值int[]score=newint[]{90,85,55,94,77};

for(inti=0;i<score.length;i++)System.out.printf("score[%d]=%d\n",i,score[i]);一维数组对象intlength=scanner.nextInt();

float[]score=newfloat[length];//动态配置长度

for(inti=0;i<score.length;i++){System.out.print("输入分数:");floatinput=scanner.nextFloat();score[i]=input;}可以使用动态的方式来宣告数组长度,而不用在程序中事先决定数组大小二维数组对象二维数组使用「名称」与「两个索引」来指定存取数组中的元素以对象的方式来配置一个二维数组对象int[][]arr= {{1,2,3}, {4,5,6}};for(inti=0;i<arr.length;i++){for(intj=0;j<arr[0].length;j++)System.out.print(arr[i][j]+"");System.out.println();}int[][]arr=newint[2][3];二维数组对象以对象的方式来配置一个二维数组对象int[][]arr=newint[2][3];二维数组对象int[][]arr={{1,2,3}, {4,5,6}};int[]foo=arr[0];//将arr[0]所参考的数组对象指定给foofor(inti=0;i<foo.length;i++){System.out.print(foo[i]+"");}System.out.println();foo=arr[1];//将arr[1]所参考的数组对象指定给foofor(inti=0;i<foo.length;i++){System.out.print(foo[i]+"");}System.out.println();二维数组对象使用new配置二维数组一并指定初值宣告三维以上的数组int[][]arr=newint[][]{{1,2,3}, {4,5,6}};int[][][]arr={{{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}}};int[][][]arr=newint[2][2][3];不规则数组intarr[][];

arr=newint[2][];arr[0]=newint[3];//arr[0]参考至长度为3的一维数组

arr[1]=newint[5];//arr[1]参考至长度为5的一维数组

for(inti=0;i<arr.length;i++){for(intj=0;j<arr[i].length;j++)arr[i][j]=j+1;}

for(inti=0;i<arr.length;i++){for(intj=0;j<arr[i].length;j++)System.out.print(arr[i][j]+"");System.out.println();}进阶的数组操作一维数组的参考名称之宣告将同一个对象指定给两个参考名称int[]arr=null;int[]arr1={1,2,3,4,5};int[]tmp1=arr1;int[]tmp2=arr1;

System.out.print("透过tmp1取出数组值:");for(inti=0;i<tmp1.length;i++)System.out.print(tmp1[i]+"");进阶的数组操作将同一个对象指定给两个参考名称System.out.print("\n透过tmp2取出数组值:");for(inti=0;i<tmp2.length;i++)System.out.print(tmp2[i]+"");

tmp1[2]=9;System.out.print("\n\n透过tmp1取出数组值:");for(inti=0;i<tmp1.length;i++)System.out.print(tmp1[i]+"");System.out.print("\n透过tmp2取出数组值:");for(inti=0;i<tmp2.length;i++)System.out.print(tmp2[i]+"");System.out.println();进阶的数组操作将同一个对象指定给两个参考名称int[]arr1={1,2,3,4,5};int[]tmp1=arr1;int[]tmp2=arr1;进阶的数组操作int[]arr之后,arr是一维数组的参考名称,可以参考至任何长度的一维数组对象int[]arr1={1,2,3,4,5};int[]arr2={5,6,7};int[]tmp=arr1;

System.out.print("使用tmp取出arr1中的元素:");for(inti=0;i<tmp.length;i++)System.out.print(tmp[i]+"");

tmp=arr2;System.out.print("\n使用tmp取出arr2中的元素:");for(inti=0;i<tmp.length;i++)System.out.print(tmp[i]+"");System.out.println();数组复制使用循环作数组复制int[]arr1={1,2,3,4,5};int[]arr2=newint[5];

for(inti=0;i<arr1.length;i++)arr2[i]=arr1[i];

for(inti=0;i<arr2.length;i++)System.out.print(arr2[i]+"");System.out.println();数组复制使用System类别所提供的arraycopy()方法在JDK6中,也为Arrays类别新增了数组复制的copyOf()方法int[]arr1={1,2,3,4,5};int[]arr2=newint[5];

System.arraycopy(arr1,0,arr2,0,arr1.length);

for(inti=0;i<arr2.length;i++)System.out.print(arr2[i]+"");System.out.println();Arrays类别名称说明sort()帮助您对指定的数组排序,所使用的是快速排序法

binarySearch()让您对已排序的数组进行二元搜寻,如果找到指定的值就传回该值所在的索引,否则就传回负值

fill()当您配置一个数组之后,会依数据型态来给定默认值,例如整数数组就初始为

0,您可以使用Arrays.fill()方法来将所有的元素设定为指定的值

equals()比较两个数组中的元素值是否全部相等,如果是将传回true,否则传回

false数组比较不可用'=='比较两个数组的元素值是否相等int[]arr1={1,2,3,4,5};int[]arr2={1,2,3,4,5};

int[]tmp=arr1;

System.out.println(arr1==tmp);System.out.println(arr2==tmp);数组比较deepEquals()与deepToString()int[][]arr1={{1,2,3}, {4,5,6}, {7,8,9}};int[][]arr2={{1,2,3}, {4,5,6}, {7,8,9}};int[][]arr3={{0,1,3}, {4,6,4}, {7,8,9}};

System.out.println("arr1内容等于arr2?"+Arrays.deepEquals(arr1,arr2));System.out.println("arr1内容等于arr3?"+Arrays.deepEquals(arr1,arr3));System.out.println("arr1deepToString()\n\t"+Arrays.deepToString(arr1));foreach与数组加强的for循环(EnhancedforLoop)J2SE5.0之前在J2SE5.0之后for(typeelement:array){

System.out.println(element)....}int[]arr={1,2,3,4,5};for(inti=0;i<arr.length;i++)System.out.println(arr[i]);int[]arr={1,2,3,4,5};for(intelement:arr)System.out.println(element);foreach与数组如果是对象的话二维数组String[]names={"caterpillar","momor","bush"};for(Stringname:names)System.out.println(name);int[][]arr={{1,2,3},{4,5,6},{7,8,9}};for(int[]row:arr){for(intelement:row){System.out.println(element);}}对象数组以下产生几个对象?以下的宣告产生几个对象?以下产生几个对象?int[]arr=newint[3];int[][]arr=newint[2][3];Integer[]arr=newInteger[3];对象数组以下的宣告产生几个对象?Integer[][]arr=newInteger[2][3];第6章字串

认识字符串(String)字符串进阶运用String类别在某些程序语言中,字符串是以字符数组的方式存在在Java中字符串不仅仅是字符数组,而是String类别的一个实例Stringtext="字符串的使用";System.ou

温馨提示

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

评论

0/150

提交评论