为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

达内java笔记

2012-12-28 50页 doc 454KB 63阅读

用户头像

is_769144

暂无简介

举报
达内java笔记目录 CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 6 CoreJava DAY03 数组 11 CoreJava DAY04 15 CoreJava DAY05 面向对象 17 CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07 修饰符 26 CoreJava DAY08 常用类 29 CoreJava DAY09 高级语言特征 30 CoreJava DAY10 主方法,静态导入,包装类...
达内java笔记
目录 CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 6 CoreJava DAY03 数组 11 CoreJava DAY04 15 CoreJava DAY05 面向对象 17 CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07 修饰符 26 CoreJava DAY08 常用类 29 CoreJava DAY09 高级语言特征 30 CoreJava DAY10 主方法,静态导入,包装类,枚举 32 CoreJava DAY11 内部类 36 CoreJava DAY12 集合 List 40 CoreJava DAY13 集合 Set 46 CoreJava DAY14 集合 Map 49 CoreJava DAY15 异常、断言 52 CoreJava DAY16 反射、注释 57 CoreJava DAY17 GUI 64 CoreJava DAY18 awt event 81 CoreJava DAY19-20 多线程 85 CoreJava DAY21-22 IO 95 CoreJava DAY23 网络编程 107 CoreJava DAY01 Java概述 ############################################################################### ########## CoreJava DAY01(2009.02.21) ############ ########## Made by NieXu ############ ############################################################################### 一、学习CoreJava的要求 1、上课一定要听懂(理解) 2、课后一定要练习 3、练完后要思考 二、Java的优势 1、Java中省去了对指标的操作,但并不是没有指标了,只是被封装了而已,代替指标的是种新的变量,叫做引用,这个引用里面也是保存的一个对象的地址,它和指针的差别就是比指针功能要弱化了,也更简单了。 内存空间自动回收,即垃圾回收,体现了其简单性。 2、安全性好,字节码的验证 3、Java的跨平台性:用这个语言开发出来的程序可以在不同系统中运行: 源码是怎样成为可执行代码的 源码-->编译-->目标码(二进制机器码)-->连接-->可执行档 由此看来,汇编、C、C++等语言都是不跨平台的,因为他们的编译过程就直接与当前系统挂钩了,C和C++源码都是跨平台的,我们所指的跨平台是基于编译过程中的跨平台,以上几种语言在不同的系统中编译出来的目标码是不同的。 Java跨平台就是编译过程中的跨平台,怎么实现的呢,那就是Java虚拟机: Java的源码编译过程: 源码-->编译-->字节码-->把字节码装载到虚拟机中运行 --JAVA虚拟机:JVM 屏蔽掉了不同平台的差异,为上层的字节码提供了一个统一的运行环境 虚拟机是为了给字节码提供统一的执行平台,每种操作系统所用的虚拟机是不同的,是为了统一JAVA字节码的解析执行方式,如果没有虚拟机,在一种操作系统上写了JAVA代码,编译成字节码后只能在本操作系统上运行,但是换一个操作系统的话就要重新再写一遍JAVA代码然后重新编译, 所以虚拟机提高了代码的复用性,实现了一次编写,多处使用的优点。 不同系统的Java虚拟机之前的源码和字节码部分都是跨平台的,从虚拟机就不是跨平台的了。 这样Java的字节码就可以直接用来传播,而不用传播源码了。 三、对Java课程总体的大纲的介绍 四、JDK/JRE/JVM JDK:JAVA开发工具包,比JRE多了一些开发和调试的命令,比如javac、java(用于执行Java字节码文件)等等。 JRE:JAVA运行环境 JVM:JAVA虚拟机 包含关系:JDK包含JRE,JRE包含JVM 如果你搭建的Java开发环境是用来做Java开发的,那么就安一个JDK,从java.sun.com(最新的版本为1.6)下载,注意 如果你不做开发,而只是运行别人开发调试好的程序(或者字节码文件),那么就只安装一个JRE就可以了 一般服务器上就只安装JRE 针对不同的操作系统有不同的JDK下载 在JDK安装好后的档夹中有个bin目录,里面一般是我们经常用到的一些命令,比如javac、java 在JDK目录下有个src.zip檔,解压开后就是JDK类库中的源码,也就是rt.jar压缩檔中class檔的源码。 jre目录是JDK自带的JRE,里面也有bin目录,一般存放的是运行时的一些命令 jre活页夹中的lib文件中有一些jar文件(叫JAVA的归档文件),里面都是一些class檔(以此为后缀名表示java的字节码文件)在虚拟机运行时作为类代码其中一个比较重要的jar檔就是rt.jar,里面放的是JDK给我们提供的一整套开发的基础类库的字节码,可以直接使用。 (补充:.java为源文件,经过编译后成为.class字节码文件;了解一个类的定义和用途可以查找开发文档,如果还是没找到的话就找源文件,在src.zip中后缀名为class的文件) 五、配置环境变量 JAVA_HOME:JDK的安装路径 CLASSPATH:字节码的搜索路径 PATH:命令的搜索路径(要加上jdk.../bin) Linux: --一般JDK是放在/opt/jdk1.6.0_05 --配置环境变量的文件是主目录中的".bash_profile"文件 进入终端后:vi .bash_profile 在里面配置: JAVA_HOME=/opt/jdk1.6.0_05 CLASSPATH=. PATH=$PATH:$JAVA_HOME/bin:....... export JAVA_HOME export CLASSPATH export PATH --配置完后保存退出,然后source .bash_profile 在命令行打java命令验证是否配置成功,如果成功了,注销一遍系统 Windows: --右键我的计算机-->高级-->环境变量-->在系统变量或者用户变量上配置--> JAVA_HOME:当前机器上JDK的文件目录 "C:\Program Files\Java\jdk1.6.0_05" CLASSPATH:类的搜索路径 "."当前目录(.;%java_home%\lib;) Path:命令的搜索路径 %JAVA_HOME%\bin; --开始-->运行-->cmd-->javac验证是否配置成功 六、第一个JAVA程序 一个java檔只能定义一个public类,并且public修饰的类的类名要与文件名相同 vi MyFirstJava.java public class MyFirstJava{ public static void main(String[] args){ String name="tangliang"; int age=30; System.out.println("my name is:"+name); System.out.println("my age is:"+age); } } 写好后在命令行cd\到文件所在目录,然后打 javac MyFirstJava.java编译檔 编译成功后当前檔夹中会出现一个MyFirstJava.class文件 运行:java MyFirstJava 结果: my name is:tangliang my age is:30 要学会编译出错后查找错误! (补充:1、一个Java源文件中可以定义多个类,但最多只能有一个public类,而且该public类的类名要和文件名一致。 2、一个Java源文件在编译后形成的字节码文件个数与该源文件中定义的类的相同,即每定义一个类可以形成一个字节码文件。 3、一个可运行的Java类有且只有一个main方法,而且main方法的签名是固定的,main方法是程序的的入口方法。 4、类的包:对同一个功能模块的类的统一管理,做大型开发时,一般按功能模块先来命名包,包结构的命名规则例如:com.tarena.abs.model即公司的URL+项目名称+模块名 ) 在檔中在定义一个class Animal{} 保存编译后档中就会多一个Animal.class檔,也就是说,檔中有多少类,那么就有多少类檔 java命令执行所做的东西 1、找到类的字节码文件,要用到CLASSPATH的环境变量 2、加载类到内存中 3、找类的主方法,main方法,执行代码 七、包 1、作用,java程序很庞大的话会有很多类檔,问了分类存放,那么就把相同类型的类檔放在同一个包中。 2、语法: package 包名; ...正文; 编译时用javac -d 目录 XX.java(运行时-d后空格加上包名.类名) 编译好后,class檔会被自动放在自己定义的包(自动生成的檔夹)中,包会放在编译命令中指定的目录中执行时在包所在的当前目录下打 java 包名.类名 (练习:在原来的MyFirstJava文件内容的第一行增加package corejava.day01;然后保存;然后在DOS下先后输入命令: javac.MyFirstJava.java -d .和Java.MyFirstJava -d此后就在D盘建立起两个文件夹,生成了名为MyFirstJava.class的文件,并在DOS下有结果显示。) (补充:1、java命令要做3个工作:首先是启动JVM;加载PackageTest.class(如果没发现则会出现提示,此时要检查CLASSPATH中设置的内容 );运行PackageTest.main。 2、找类的顺序:先在当前所在包下找,在jre/lib/xxx.jar,最后才在CLASSPATH中找。所以不要创建和JDK中同名的类) 八、注释 三种: 1、单行注释: //... 2、多行注释: /*...*/ 3、文檔注释: /**......*/ 另一种多行注释,但是这种注释可以生成API文檔(HTML格式的) 九、提取API文檔的命令:javadoc javadoc应用,提取说明文件,根据文档中的注释生成程序文档。 javadoc XX.java -d 生成文文件路径 比如:javadoc String.java -d .\stringdoc(如果是直接在盘符下有该文件则-d后只用实心点即可,如果需要通过新建文件夹的同时生成则输入一个新的文件夹名字) 在String.java所在的檔夹中便会生成一个stringdoc檔夹,里面是html格式的解释文檔 顺便教下学生看API文檔 九、import 如果在一个java檔中用到了不在同一个包中的类的话,就要用import来引入一个类,允许在程序中使用的时候不用包名,直接用类名就可 以了。 语法:import 包名.类名 写在package后,类定义前(一个文件里面可以不说明package,有就只能有一个,可以一或二行,之后就是import声明,0或多行,也可以 不用import导入很多类,即省略;然后就是类的声明)引入一个类 注意: package在java檔中只能出现一次,并在最前面 import可以有多条 写在package后,类前 十、创建jar文件命令 把指定的包中的class檔打包成jar檔K(里面是编译好的字节码文件) 语法: jar -cvf jar文件名 要打包的檔夹 如jar cvf abc.jar ./day01(即把day01中的文件打包到abc.jar里面) 执行完后在当前目录会生成一个abc.jar的檔,解压后就是day01檔夹,里面还是class檔 cvf:create view filename创建可视文件名 如果在别的java檔中要用到此jar檔中的类,那么就要在环境变量的CLASSPATH中多配一个abc.jar 的路径。然后在类檔中直接import这个类就可以了 CLASSPATH配置完成后,JVM先从当前路径下找类,再从rt.jar中找类,然后再从abc.jar中找这个类 十一、JDK中的基础包 java.lang语言包 java.awt/javax.swing/java.awt.event 图形开发包 java.applet JAVA的applet小程序包 java.io 输入输出流包 java.net 网络包 java.util 工具包 第二章 语言元素 一、标识符 只能以字母,“_”,“$”符号开头,不能以数字开头, 但是非开头的位置可以出现数字. 二、良好的编码习惯 1、类的首字母要大写,如果有多个单词,每个单词首字母都要大写 比如:HelloWorld 2、接口名命名与类名一样 3、方法名第一个单词小写,以后每个单词的首字母都大写 比如:getName 4、变量名的命名习惯和方法名的相同 5、常量(不可改变的)的名字所有字母都大写,单词与单词之间用“_”连接 比如:DRIVER_NAME 6、包名所有字母都小写 三、关键词(50个) 自己命名变量名或者其它名字不能和关键词的一样 true,false,null不是关键词,是字面值,同样不能把这些单词作为名字 goto和const(表示常量,在JAVA中用final代替)是保留字,并不应用于java开发,也不能作为其它名字使用 其它语言中goto语句的用法(无条件跳转):在C和C++中有时用goto可以提高程序的效率(如:在多重循环嵌套中跳出最外层循环时很方便),但是在JAVA中影响程序的可读性且存在安全隐患。 java中的代替goto的是break loop; loop是个标号,标记一个循环,break loop就结束了这个循环 四、数据类型 八种基本数据类型 boolean 两个值true或者false 8位 byte 8位整数 short 16位整数 char 16位的Unicode编码,有足够的空间保存非英文字符的编码值,也类似于整型 int 32位整数 long 64位整数 float 32位浮点型 double 64位浮点型 CoreJava DAY02 数据类型和控制结构 ############################################################################## ########## CoreJava DAY02(2009.02.23) ############## ########## Made by NieXu ############# ############################################################################### 一、数据类型 boolean 两个值true或者false,占8个二进制位(在C和C++中用0代表假,非0代表真,但在Java中则把布尔型的值和整型数值严格区分) 7种数值类型,他们之间是可以相互转换,但是转换是有前提的,实型的存储为近似存储,整型则为精确存储。 byte 8位整数 short 16位整数。 char 16位的Unicode编码(在C和C++中用ASCII码保存字符,一般由0~127,最多有256种,但是在Java中则用Unicode编码,最多有65536种,还可以赋中文汉字),有足够的空间保存非英文字符,单引号中为一个字符,双引号中为字符串。例如: 插入ucChar=‘\u0060’用单引号意思是Unicode值为0060的字符,16进制化为10进制,则代表ASCII值为96的字符。表示的值的范围:0~65535 --'A':65,'a':97,'0':48 int 32位整数 long 64位整数 float 32位浮点型 double 64位浮点型 二、String类型:是一个类,而不是基本类型 赋值的话就用双引号引起来,比如String a="abc"; String的几种常用方法: charAt(int n);获取这个字符串的n位置的字符,n从0开始 concat(String str);把当前字符串与参数中的字符串连接到一起返回一个新字符串 其它的教学生自己去查 三、整型数据 1、整型变数赋值 int ia=0x55;//这种赋值是可以的,赋值为了一个16进制资料 byte bb=0x771;//0x771已经超出了byte的取值范围,所以编译这句话会出错 byte ba=(byte)0x771;//把0x771强制转换成byte long la=1234567L;//给long类型的变量赋值 2、强转后值如何变化: 规则: 整数在内存空间中的存储方式:以补码的方式。 byte b=39;b转换成二进制是00100111(-128~127) short s=39;b:0000 0000 0010 0111(-32768~32767) -39为39的补码:各位取反,末位加一 1101 1001就代表-39 如果最高位是0,那么就是存的一个正整数,1就代表负整数 -128的二进制要先求128的原码0111 1111 求补码后-128的二进制表现为1000 0000 1111 1111代表-1 整型数据强转如果大转小的话直接把其二进制高位截掉,保留低位 0x771换算成二进制0111 0111 0001,强转成byte后为0111 0001 四、浮点型数据 1、赋值 float fa=123.4F//后面加个F或者f,或者使用强制类型转换(不加则编译出错,默认为double型) double d=123.456D//后面的D跟不跟都可以,默认为double。 2、存储方式暂不用理解 数据类型之间的转换有两种:自动类型转换(从小范围的值转到大范围的值,也有可能存在数据丢失的问,3种情况:int-—〉float;short-〉float;long-〉double;转换后两个值不等不能说明两个数不相等,但是得出的两个值相等则二者一定是相等的)和强制类型转换(会存在数据丢失的问题)。 3、数据丢失: 五、对象类型(引用类型) 1、属于所有非基本类型的其它类型 2、类型的分类: --八种基本类型 --引用类型(类、接口、枚举、标注),引用类似于C中的指针,即保存一个地址值,把新空间的首地址赋给新的对象,然后可以用对象.XXX的方式来访问该对象的某个属性,如P.age) --库类型 3、在内存中的存储方式 对象类型的变量实际上存储的是对象所在的内存的地址 一个对象类型占四个字节,也就是其最大寻址空间是4G。 内存被分为两块空间:栈空间和堆空间 --栈:负责给方法分配空间 main方法在栈的最下面 方法里对象的引用也是存在栈空间中的 存储对象的引用如果是定义在方法体内的也是存在栈中的 --堆:给对象分配空间 对象就相当于一个气球,引用就相当于栓着气球的绳子 一个对象可以有多个引用指向它。 六、垃圾回收 1、如果某一个对象没有引用指向它了,那么这个对象就是个垃圾对象 比如String s=new String("..."); s=null; 那被new出来的String对象就是一个垃圾数据了 2、垃圾回收机制 对于没有被引用的对象,java JVM会自动回收 System.gc() 提醒虚拟机进行垃圾回收,但只是提醒建议 七、错误、警告和异常(刚开始学习时很容易产生异常,即没有让引用指向任何对象,就会产生空指针异常) 1、空引用 比如String s=null s就没有指向任何对象 s.方法名,如s.charAt(0),如果s是空的话就会抛出NullPointerException(空指针异常) 2、编译的问题: --错误(语句存在语法上的问题) --警告(语句存在逻辑上的问题) 违背了语法的要求 3、运行时问题: --Exception 异常(例如:程序的执行需要调用外部文件,在编译时不涉及此类调用,编译时只是检查数据类型是否是匹配,所以在运行时会发现错误,但程序还可以继续进行 --Error 错误 程序中断了,比如内存溢出了 编译器检查不出来,而是运行时检查出来的 违反了正常逻辑 八、运算符 赋值运算符12个 比如: byte a=3; a=a+5;//会报错,因为5是被认为是int,所以a+5得到的也是int,无法把int值赋给byte a+=5;//不会报错,因为不管运算符右边得到的是什么类型都会把右边得到的值转化为左边的类型 相等和不等关系可以用于数值比较和引用对象引用等,即所有有效类型都可以用等和不等来比较。 关系运算符 算术运算符 即加、减、乘、除等。(一个字符串可以和任意类型相加) 移位运算符:只能针对二进制数据(整数) << 左移,左移一位相当于原来的数乘二,大于32位的话高出的位就不要了,如果移动的位数大于32的话java会自动把这个位数变为这个数对32求余的值。 >> 右移,右移一位相当于除2取整,两位相当于连续次除2取整而不是除4取整,看正数还是负数,正数右移的话高位补0,负数的话补1。 >>> 无符号右移(算数右移),不考虑符号位,移进来的都补0。 2、位运算符 & 按位与 两个数按位与,全部转换成二进制后按位比较,全为1才是1,其它是0,返回一个新的整数 | 按位或 两个数按位或,全部转换成二进制后按位比较,全为0才是0,其它是1,返回一个新的整数 求反~变量,如:int a=5;b=~a; ^按位异或 (条件)?A :B 如果?前面条件的返回值为真,那么就执行问?与:之间的A,如果返回值为假,则执行:后面的B 5、自加和自减 ++ 前++的话属于先加后用,后++的话先用后加 -- 前--的话属于先减后用,后--的话先用后减 6、运算符的优先级:从高到低 --最高的:(),[],. --第二高的:++,--,+(正),-(负),!,~ --算术运算符 --移位运算符 --关系运算符 --位运算符 --逻辑运算符 --三目运算符 --赋值运算符 优先级相同的根据结合性从左到右算或从右到左算 第三章 控制 重点放在循环的构建上 一、if(boolean){ ... } 或 if(boolean){ ... }else{ ... } 或 if(boolean){ ... }else if(boolean){ ... }else{ ... } 二、switch(..){ Case A: ..:......;break; case B:..:......;break; ... default:....; } 1、switch后括号中的值必须是int,byte,char,short,枚举类型的变量之一,其它类型的就不行了。 2、每个case后面的值必须是不相等的,而且必须是常量 3、如果每个case冒号后面的语句执行完后没有break,还会继续执行后面case里的语句,所以在每个case的语句结束后加一个break 4、default代表如果和所有case后的值都不匹配,就执行这里的语句。无论default写哪都是最后执行的。 System.exit(0); --如果系统执行到这条语句的话程序就退出了 break和continue后面可以加下标,跳出循环和继续循环。 四、for循环 --语法 for(1;2;3){ ... } --写在1的地方是给一个值初始化,2位置的是退出循环的条件,一般是1位置的变量到什么程度退出循环,3位置是1位置值的变化,当第一次循环结束后执行一遍3位置,然后接着判断2的位置的值是真还是假,假就退出,真的话接着循环.循环的顺序便是1-->2-->循环体内代码-->3-->2-->如果为真继续执行循环体内代码-->为假退出循环 五、while循环 --语法 while(boolean){ ... } --每循环一次就判断括号中的代码是不是为真,是真的话就继续循环,假的话就结束循环 六、do..while循环 --语法 do{ ... }while(boolean); --无论如何都会先执行一次再判断条件是否为真,其它的和while循环规则一样 七、用循环来检测输入(主要是教学生利用控制台读取参数的方法) 1、用流的方式 --BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 2、用java.util包中的Scanner类 Scanner sca=new Scanner(System.in); sca.next(); CoreJava DAY03 数组 ############################################################################### ########## CoreJava DAY03(2009.02.24) ############ ########## Made by NieXu ########### ############################################################################### 一、循环嵌套 主要是通过联系来讲的 作业: 1.输出金字塔 2、打印99乘法表 3、搜索1000-9999之间的数字,条件:千位>百位&&十位>个位&&千位+个位= =百位+十位 二、数组 --一维数组 1、声明数组 语法: --类型[] 数组名 or 类型 数组名[] 比如:int[] a 或者 int a[] 2、声明数组只是声明了一个数组的引用,并没有在内存中给数组开辟空间 数组是被当作对象来处理的,所以要初始化,语法: --类型[] 数组名=new 类型[长度] 比如:int[] a=new int[10]; 3、遍历数组 for(int i=0;ijava project-->写上project name(工程名)-->next -->create new source folder(创建存放java文件的目录)命名为src -->finish-->finish 这种创建工程的方式是把java檔和class檔分开的,视频上没有讲,请项目经理注意强调这种建法 4、在src目录上点右键new-->package建立一个包命名为day01(存放第一天的代码) 5、在day01包上点右键new-->class建立一个类,写上名字finish后在就可以在这个檔里写java代码开发了 6、写好代码后运行,在代码区域点击右键-->run as-->Java Application 四、作业 1.计算工资个人所得税的题目 2.倒排数字 3.输入1-100之间所有的素数 五、在主方法之外定义自己的方法 1、定义语法:在主方法之外,类范围以内 修饰符 返回值 方法名(参数类型 参数名){ [局部变量列表;] [语句块;] } 比如: public static boolean isPrimeNumber(int i){ ... } public static是修饰符,boolean是返回值类型,isPrimeNumber是方法名,括号里是方法的形参列表 注意:只要返回值不是void,无论如何都要返回一个返回类型的值,return 2、调用方法的过程 1、为被调用方法分配临时存储空间(栈) 2、把实参值传给形参 3、程序流程跳到被调用方法中执行 4、被调用方法执行完成,程序流程跳回主调方法并且带回返回值(如果有的话) 与此同时,被调用方法的临时空间被释放 六、方法的递归调用 一个方法直接或间接调用自己的形式,解决比较复杂而且有一定规律的逻辑问题 1.用递归求一个自然数的阶乘 2.打印诗 3.酒店管理系统 CoreJava DAY04 ############################################################################### ################# CoreJava DAY04(2009.02.26) #################### ################# Made by NieXu #################### ############################################################################### 1、猜数字游戏 游戏产生一个0-1000的整数,让用户从控制台输入一 个数字来猜,如果猜大了就显示太大了,继续要求用户 输入,如果猜小了就显示猜小了,如果猜对了,就显示 恭喜你,猜对了,游戏结束,如果猜了10次还不对,那么就显示 你太笨了,下次再猜吧,游戏结束 2、五子棋游戏,游戏开始要求 输出一下棋盘,然后提示黑方和白方下子,玩家从 命令行输入:af,表示在af坐标落子,其中黑方的 子用@表示,白方子用O表示,每一方有一方落子, 则要重新输出棋盘的状态,程序还要求能判断某一方 获胜并终止程序。 棋盘初始样子如下: a b c d e f g h i j k l m n a * * * * * * * * * * * * * * b * * * * * * * * * * * * * * c * * * * * * * * * * * * * * d * * * * * * * * * * * * * * e * * * * * * * * * * * * * * f * * * * * * * * * * * * * * g * * * * * * * * * * * * * * h * * * * * * * * * * * * * * i * * * * * * * * * * * * * * j * * * * * * * * * * * * * * k * * * * * * * * * * * * * * l * * * * * * * * * * * * * * m * * * * * * * * * * * * * * n * * * * * * * * * * * * * * 3、砸金花游戏 编写程序模拟砸金花的游戏,程序开始时要求用户输入 赌注,并在一副牌中随即发两手牌,每手牌三张,然后比较这 两副牌大小,若A比B打,则用户赢得赌注,反之则输掉赌注 比较规则: 1、三条》同花顺》同花》顺子》对子》三张 2、处于同一级别的两手牌比较最大的一张牌的大小 3、若两手牌都是对子,则应比较成对的那张牌的大小 4、扫雷游戏 要求在10x10矩阵中随机布雷,并计算出每个位置周围的地雷数, 并保存在二维数组中,若该位置是地雷,则保存-1,然后要求用户 从命令行输入坐标来排雷,排雷使用一下两种命令: b 3 6:将坐标3,6标志为地雷 p 2 5:排除2,5坐标位置是地雷 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 CoreJava DAY05 面向对象 4 minutes ############################################################################### ########## CoreJava DAY05(2009.02.30) ############# ########## Made by NieXu ############# ############################################################################### 一、面向对象 编程要解决的本质工作: 把现实问题抽象成计算机能解决的问题,对现实问题在计算机中建模(抽象) 抽象: 1、对数据的抽象 2、业务逻辑 思想:“一切皆对象” 对象-->数据-->类-->数据类型 二、类 1、创建类的语法: public class 类名{ 类型 变量名; 类型 变量名; ... public void 方法名(){ ... } ... } 例子: public class Animal{ String name; int age; ... public void eat(){ ... } public void move(){ ... } ... } 2、创建类的对象的语法: 类名 对象名=new 类名(); Animal a=new Animal(); 调用对象的成员 对象名.属性名; 对象名.方法名(); a.name=...; a.move(); 3、构造方法: 用处: 1、构造方法一般用来为属性赋初值 2、构造方法会在生成对象时被系统自动调用 特点: 1、没有返回值,写返回值的位置什么都不写 2、方法名必须和类名完全相同 构造方法也可以定义参数,也可以在里面写实现代码 但是如果一个类中只有一个构造方法,并且这个方法是有参数的,那么在创建类的对象的时候也要传参数。(当类中定义了构造方法,系统就不会再添加无参的构造函数了。) 如果类里没有写构造方法,在创建对象的时候同样会被虚拟机调用其构造方法,因为: 任何类都有构造方法,如果程序员不定义,则系统会加上一个缺省的构造方法。 比如:如果Animal没定义构造方法,那么系统会自动给这个类加上 public Animal(){}这样一个无参空实现的构造方法。 如果自己定义了构造方法,则系统就不会添加这个缺省的构造方法。 4、this的用法 this等价于当前对象,调用当前对象的属性或方法就用 this.属性名,或this.方法名()。 当前对象:指谁在调用当前这个方法和属性,谁就是当前对象。在定义类的时候是不存在当前对象的。 在局部变量与外部变量同名的时候,为了区分,就要在外部变量的前面加一个this来表示这个变量是类的全局变量。 5、访问控制修饰符: public:公共的,如果用这个修饰属性和方法,则这个属性和方法能在任何地方被调用。 private:私有的,如果用这个修饰属性和方法,则这个属性和方法只能在类的内部被使用。 修饰符的作用:封装类 6、封装: 如果一个数据类型,把它不想让外部知道的属性和方法私有化,把它能让外部访问的属性和方法公共化,这就叫封装。 属性最好是被封装在内部的,因为这样公开自己内部信息的主动权就在自己身上。 现实世界的所有个体我们都可以看成一个封装体,因为他们对外展现的都只是其一部分特征行为。 但是属性的隐藏不是最终目的,是为了让外部更好的、更安全的去访问。 定义访问方法:setXXX(),getXXX() 访问的方法格式是固定的 获得属性值的方法必须返回类型是属性的类型,方法名为 get属性名(), 设置属性值的方法参数类型必须是属性的类型,方法名为 set属性名(属性类型 变量名), 以上方法名还要满足方法的命名规范,比如 public void setName(String name){ this.name=name; } public String getName(){ return this.name; } 那么以后再给对象的属性赋值就写成a.setName("xiaoqiang"); 获得属性的值就写成a.getName(); 封装的好处:代码维护方便,如果属性名变了,其它程序根本不用做改动,还是调用这个控制属性的方法就行了 7、方法的重载:一个类中同名但参数不同的方法 this(..,..);调用本类其它的构造方法 this(..,..)这样的调用只能出现在构造方法的第一行 CoreJava DAY06 类的加载过程、实例化、继承、多态 12 minutes ############################################################################### ########## CoreJava DAY06(2009.03.04) ########### ########## Made by NieXu ########### ############################################################################### 回顾: 数据->类 一是要描述数据的静态特征(属性),一是要描述其动态行为(方法)。 生成对象,构造方法的调用 当生成对象时,比如:Animal a=new Animal()时,系统做
/
本文档为【达内java笔记】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索