java 面向对象Word文档格式.docx
《java 面向对象Word文档格式.docx》由会员分享,可在线阅读,更多相关《java 面向对象Word文档格式.docx(65页珍藏版)》请在冰豆网上搜索。
&
||!
(非)
9。
关系运算符
==!
=>
=<
<
10。
三目运算符
例如:
Stringop="
"
;
intnum=20;
op=(num>
20)?
success"
:
error"
11。
程序流程控制及循环结构体
if-elseswitch-case
forwhiledo-while--breakcontinue等语句
12。
数组
一维intnum[]=newint[5];
二维intnum[][]=newint[5][4];
类和对象
1.什么是对象?
具有明确的状态和行为的实体(对象<
===>
东西)。
2.什么是类?
对象的集合体,具有相同属性(状态、特征)和方法(行为、功能)。
3.如何定义类?
publicclass类名{
//定义属性(变量)
//定义方法(函数)
}
Eg:
publicclassPerson{
//定义属性
Stringname;
intage;
//定义方法(函数)
voidsay(){
//这里写具体执行的功能
4.如何创建对象?
语法:
类名对象名=new类名();
Personp1=newPerson();
5.根据创建的对象,调用属性和方法?
对象名.属性或者对象名.方法名();
p1.name=”张三”;
p1.say();
继承与多态
一.继承
1.什么是继承?
事物的共同性质的类(具有相同属性或方法的类)。
类中表现形式:
子类、父类的关系。
2.为什么需要使用继承?
a)解决代码重复问题、维护更简单。
b)能够使用父类中的属性和方法,使当前类变得更强大。
3.如何使用继承?
继承使用关键字:
extends
publicclass子类名extends父类{
//在子类中,就可以使用父类中的属性和方法
注意:
1.一个类只能继承一个父类。
2.父类中私有(private)属性和方法,在子类中不能使用。
3.所有类默认都会继承自Object(所有类都是Object的子类)。
4.继承中关键字的使用:
super、this
this关键字:
1.可以用来调用当前类中的属性和方法。
2.也可以调用当前类的构造函数。
(语法:
this(参数值,…))
注意:
特别注意:
一定注意:
前提条件:
必须是构造函数
中的第一行。
super关键字:
1.可以用来调用父类中的属性和方法。
2.也可以调用父类的构造函数(语法:
super(参数值,..))
必须是子类构造函数
中的第一行
3.在继承关系中,子类默认会去调用父类中无参数的构造方法。
二.多态
多态是面向对象中的重要特性之一。
1.什么是多态?
事物的多种形态。
多态在程序中具体表现:
方法的重载、方法的重写。
2.为什么需要使用多态?
重载:
简化用户操作。
(eg:
MessageBox.show())
重写:
扩展父类中的方法。
3.如何使用多态?
(在一个类中有多个方法名相同的方法,此时称方法被重载)
特点:
1.方法名必须相同。
2.参数不同。
(a)参数的数据类型不同b)参数的个数不同
(c)参数的顺序不同)
?
——方法的签名不同
(在子类和父类关系中,子类有一个跟父类完全相同的方法)
2.参数必须完全相同(参数类型、个数、顺序)。
3.返回值也必须相同。
总结:
1.继承——子类与父类的关系(子类可以用父类的属性和方法)。
2.所有类默认情况都会继承:
Object。
3.多态——方法的重载、重写(多种形态)。
4.重载特点:
一个类中,方法名相同,方法的签名不同。
5.重写特点:
子类与父类中,方法名相同,方法的签名相同,
返回值也相同时,称为重写。
访问修饰符(Java中的关键字)
1.访问权限修饰符
public(公共的):
任何地方、任何类都可以访问。
private(私有):
只能在当前类中使用,其他地方禁止访问。
default(默认;
注意不写的意思):
当前类+同一个包
(只要在同一个包中都可以)
protected(受保护):
当前类+同一个包+不同包中的子类。
2.方法修饰符
static(静态)
static可以用来修饰属性、也可以用来修饰方法。
修饰属性:
静态变量
修饰方法:
静态方法
1.在内存中,存放在静态区(内存中会是一个唯一)。
2.最先被执行。
(Java在启动虚拟机的时候,会先加载静态数据)
3.可以通过类名直接访问属性或方法。
类名.属性或类名.方法();
4.静态方法只能够访问静态变量。
:
例如
staticintb;
intc;
staticvoidjiaa(){
System.out.println(b);
//静态方法只能访问静态变量
《--错误--System.out.println(c);
}
final(固定、最终)
final关键字可以用来修饰:
属性、方法、类
表示常量
表示方法不能被重写。
修饰类:
表示类不能被继承(最终类)。
abstract(抽象)
abstract:
可以用来修饰方法、类
抽象:
不具体,不完整。
抽象修饰方法:
表示方法只有定义,没有方法体。
抽象修饰类:
表示类不能被实例化(因为类不完整)。
1.如果一个类中有一个或者多个抽象方法,那么当前类必须定义为抽象类。
2.抽象类不能被实例化,只能用在继承关系中,
由子类来重写父类中的抽象方法;
如果子类没有实现父类中的全部抽象方法,子类也必须定义为抽象类。
//例子
abstractpublicclassEg2{
abstractvoidshow();
abstractvoidjia();
publicclassEg3extendsEg2{
@Override
voidshow(){
//TODOAuto-generatedmethodstub
System.out.println("
姓名"
);
voidjia(){
3.接口(interface)
接口:
是抽象的最高境界。
接口作用:
1.能够解决Java中单根继承的问题。
2.程序的扩展性更强。
面向对象的总结(核心思想):
推荐书籍:
ThinkingJava4版
1.类的基本概念?
模板,用于创建对象。
类中定义属性和方法。
2.对象的基本概念?
具体的、实际存在的;
有明确的状态和行为。
3.构造方法?
构造方法与普通方法不同:
3.1方法名必须跟类名相同。
3.2方法没有返回值。
3.3方法不能显示调用,只能在创建对象的时候由new关键字调用。
4.包?
包指文件夹:
用于将类分开管理。
创建包:
package导入包:
import
5.继承?
继承的关键字:
作用:
5.1解决代码重复问题。
5.2子类拥有父类的所有属性和方法
(私有除外)。
6.多态?
多态:
多种表现形态。
程序中的多态:
方法的重载和方法的重写。
一个类中,方法名相同,参数不同的方法称为重载。
子类与父类的关系中,方法名、参数、返回值相同的方法,
称为重写。
7.this和super?
this表示:
调用当前类的属性和方法。
super表示:
调用父类的属性和方法。
this和super都可以表示调用构造方法;
必须在构造方法的第一行。
8.访问修饰符?
权限修饰符:
public\private\default(不写)\protected
方法修饰符:
static、final、abstract
9.抽象的最高境界:
接口(interface)。
Java中常用类
一.包装类
(主要的api)
java.applet提供创建applet小程序的类
java.lang提供Java程序设计的基础类
java.util提供时间日期随机数的
提供网络应用程序类
java.text提供格式化信息
1.什么是包装类?
将系统中的基本数据类型,转换成引用数据类型。
int-?
Integer
float?
Float
/**valueof方法将原始数据类型转换成包装数据类行
……………………………
2.为什么要使用包装类?
为了解决将引用数据类型转换成基本数据类型。
3.如何使用包装类?
Integer.parseInt();
//将字符串类型,转换成int类型
Float.parseFloat();
//将字符串类型,转换成float类型
二.字符串处理对象String、StringBuffer、StringBuilder
String字符串特点:
1.定义字符串的时候,会先在内存中查找,如果没有,
将开辟新的内存;
如果存在,直接指向该地址。
2.String中的值,是不可变的。
(如果值发生改变,
将开辟新的内存来存放)——需要字符串的内容经
常发生改变,不能使用String类型。
StringBuffer字符串:
用于处理可变的字符串。
常用方法:
方法名描述
StringBuffer()构造方法,用于创建StringBuffer
字符串对象
append(Stringstr)追加新的字符串
length获取长度
StringBuilder字符串:
常用方法都相同。
StringBuffer与StringBuilder区别:
唯一区别:
StringBuffer是线程安全的、StringBuilder是非线程安全的。
StringBuilder效率最高。
常用的字符串处理String;
如果经常发生改变的,
使用StringBuffer。
Math类
ceil()——向上取值
floor()——向下取值
round()——四舍五入
Date类
如何创建
Datedate=newDate();
System.out.print(date);
方法
gettime();
//返回自1970年1月1日的毫秒数
DateFormat类
其子类:
SimpleDateFormat
方法:
parse()->
将时间转换成Date类型
format->
将时间格式化(现实中的时间)
SimpleDateFormatsdf=newSimpleDateFormat("
-->
参数为时间形式如yyyy-MM-ddhh:
mm:
ssEEEEa
__>
具体为查询API帮助文档
Runtime类
——用于调用当前计算机的常用命令(Dos)。
---------->
常用DOS
开始→运行→输入的命令集锦
gpedit.msc-----组策略
sndrec32-------录音机
Nslookup-------IP地址侦测器
explorer-------打开资源管理器
logoff---------注销命令
tsshutdn-------60秒倒计时关机命令
lusrmgr.msc----本机用户和组
services.msc---本地服务设置
oobe/msoobe/a----检查XP是否激活
notepad--------打开记事本
cleanmgr-------垃圾整理
netstartmessenger----开始信使服务
compmgmt.msc---计算机管理
netstopmessenger-----停止信使服务
conf-----------启动netmeeting
dvdplay--------DVD播放器
charmap--------启动字符映射表
diskmgmt.msc---磁盘管理实用程序
calc-----------启动计算器
dfrg.msc-------磁盘碎片整理程序
chkdsk.exe-----Chkdsk磁盘检查
devmgmt.msc---设备管理器
regsvr32/u*.dll----停止dll文件运行
drwtsn32------系统医生
rononce-p----15秒关机
dxdiag---------检查DirectX信息
regedt32-------注册表编辑器
Msconfig.exe---系统配置实用程序
rsop.msc-------组策略结果集
mem.exe--------显示内存使用情况
regedit.exe----注册表
winchat--------XP自带局域网聊天
progman--------程序管理器
winmsd---------系统信息
perfmon.msc----计算机性能监测程序
winver---------检查Windows版本
sfc/scannow-----扫描错误并复原
taskmgr-----任务管理器(2000/xp/2003)
cmd/kstarthttp:
//网址
常用方法描述
exec执行一个指定的命令
常用命令:
notepad(打开记事本)、calc(计算器)、mspaint(画图)
打开网络命令:
cmd/kstart网址
System类
——系统类,用于输入、输出、获取当前时间的毫秒数。
System.out——输出
System.in——输入
System.currentTimeMillis()——
获取当前时间的毫秒数(1970年1月1日至今的毫秒数)
Calendar类
主要方法
add()在时间某部分加上
get()得到单独的年、月、日
gettime()转换成Date对象
set()设置具体时间
before()after()返回true或false
如何创建
//创建Calendar对象
Calendarcal=Calendar.getInstance();
得到具体的某部分时间
Calendar.方法
eg:
packagecom.lilin2;
importjava.util.Calendar;
importjava.util.Scanner;
importjava.applet.*;
/**
*创建万年历
*@authoradministrator
*
*/
publicclasseg1extendsApplet{
publicvoidxianshi(intyear,intmouth){
//输出信息
System.out.println("
\t\t"
+year+"
年"
+mouth+"
月"
System.out.println();
System.out.print("
日\t一\t二\t三\t四\t五\t六\n"
//创建Calendar对象
Calendarcal=Calendar.getInstance();
//设置日期为输入的日期
cal.set(Calendar.YEAR,year);
cal.set(Calendar.MONTH,mouth-1);
//0-11月
cal.set(Calendar.DATE,1);
//获取最大的日期
intday=cal.getActualMaximum(Calendar.DATE);
//获取第一天是星期几
intweek=cal.get(Calendar.DAY_OF_WEEK)-1;
//保存空格个数
intcount=0;
for(inti=0;
i<
week;
i++){
System.out.print("
\t"
count++;
}
//打印日期
for(inti=1;
=day;
if(count%7==0){
System.out.println();
}
System.out.print(i+"
publicstaticvoidmain(String[]args){
//实例化少秒器
Scannersc=newScanner(System.in);
while(true){
//提示输入
请输入年:
intyear=sc.nextInt();
请输入月:
intmouth=sc.nextInt();
//创建对象及调用方法
eg1eg=neweg1();
eg.xianshi(year,mouth);
\n\n是否继续!
!
(yORY):
Stringtr=sc.next();
if(!
(tr.equals("
Y"
)||tr.equals("
y"
))){
break;
}
集合框架
一.Collection接口
表示集合框架的父类。
Collection接口中常用方法:
必须记住:
add(Objectobj)添加数据到集合中
get(intindex)根据下标获取数据
remove(Objectobj)删除指定的数据
size()集合的大小
contains(Objectobj)验证是否重复
toArray()将集合转换成数组
Collection接口的两个子接口:
List、Set
List子接口特点:
允许存放重复数据、有序的(添加的顺序)可以使用for循环遍历数据。
--例子(arraylist或linkedlist--调用方法一样)
ArrayListaa=newArrayList();
aa.add("
a"
b"
c"
输出方式
方法一
Iteratorit=aa.iterator();
for(;
it.hasNext();
){
System.out.println(it.next());
方法二
for(inti=0;
i<
aa.size();
sysout(aa.get(i));
Set子接口特点:
不存放重复数据、无序的(添加的顺序无关),
必须使用Iterator(迭代器)遍历数据。
hashset与treeset一样>
HashSets=newHashSet();
s.add("
Iteratorit=s.iterator();
while(it.hasNext()){
实现了List接口的两个常用类:
ArrayList特点:
采用堆栈存储数据(跟数组相同)——遍历速度快,删除速度慢。
LinkedList特点:
采用链表存储数据(跟链子类似)——遍历速度慢,删除速度快。
实现了Set接口的两个类:
HashSet特点:
采用Hash算法来存放数据,数据无序。
TreeSet特点:
采用树形结构存放数据,数据自动排序。
二.Map接口
Map(映射)——将对象,按照名字=值(键=值,键值对)的形式存放。
Map接口常用方法:
put(key,value)添加数据到map中。
get(key)根据key取值
remove(key)根据key删除