java语⾔程序设计教程翁恺第⼆版课后答案_Java⾯向对象程
序设计(翁恺)
第0周 数组和对象的使⽤
0.1 数组
int[] numbers = new int[100];
所有数据都是相同类型
数组⼤⼩⼀旦确定⽆法改变(例如int[100],就只能是100个元素)
[] 名字 = new [元素个数];
元素个数必须给出,必须是整数,可以是变量;
每个元素可以当作⼀个那个类型的变量;
通过下标访问每个元素,注意下标从0开始,最⼤下标为[元素个数]-1;
编译器不检查下标是否合法,但是如果下标不合法运⾏会报错,导致程序终⽌;
for ( cnt>0)
{int[] numbers = new int[cnt];for ( int i=0; i
{
numbers[i]=in.nextInt();
sum+=numbers[i];
}double average = sum/cnt;
}
0.2 对象
包裹类型
将⼀个基本数据类型的数据转换成对象的形式,使它们可以像对象⼀样参与运算和传递。
注意⼤⼩写。
⽤处:可以⽅便的使⽤函数(如Integer.MAX_VALUE)
字符串
String s = new String("a string");
in. next(); 读⼊⼀个单词(以空格 \t 回车划分)
赋值
String a, String b
b = a;
是让b和a共同管理了原来a管理的字符串;
⽐较
相等
不能⽤ == 来⽐较
== 只能⽐较是不是同⼀个字符串
要⽐较两个字符串的内容⽤.equals
s.quals("bye");
true, 意味着字符串的内容是"bye"
⼤⼩
String s1 = "abc";
String s2= "abb";
System.out.println(s1pareTo(s2));
1,s1更⼤(⽐较unicode编码)
.charAt
返回字符串某个下标对应的字符,下标从0开始;
.indexOf
String s1 = "0123A56789";
System.out.println(s1.indexOf('A');//4
System.out.println(s1.indexOf('A56');//4 System.out.println(s1.indexOf('3');//3
String s1 = "0123A56389";
如何第⼆个3?
System.out.println(s1.indexOf('3'), loc+1);//7
得到⼦串
substring
String s1 = "0123456789"
System.out.println(s1.subString(2));//23456789 System.out.println(s1.subString(2,4));//[2,4),23第1周 类与对象
1.1 ⽤类制造对象
对象:实体,需要被创建,可以为我们做事情
类:规范,根据类的定义来创建对象
对象 = 属性+服务
数据:属性或状态
操作:函数
1.2 定义类
创建对象
new VedningMachine();
VendingMachine v = new VendingMachine();
(同⼀个类可以创建多个对象,例如)
让对象做事
.运算符
v.insertMoney(10);
1.3 成员变量和成员函数
成员变量
类定义了对象中所具有的变量,这些变量称作成员变量
每个对象有⾃⼰的变量,和同⼀个类的其他对象是分开的
函数与成员变量
函数通过对象来调⽤
v.insertMoney()
这次调⽤临时建⽴了insertMoney和v之间的联系,让insertMoney内部的成员变量指得失v的成员变量
这种联系是靠我们见不到的"this" 建⽴的。this是成员函数的⼀个特殊的固有的本地变量,它表达了调⽤这个函数的那个对象。
public classVendingMachine{int price = 80;intbalance;inttotoal;void setPrice(intprice)
{this.price = price //this.price 在setPrice⾥this.price指离它最近的price,也就是参数的price. price是指成员变量,值为80的price
}
...
}
调⽤函数
成员函数内部直接调⽤⾃⼰(this)的其他函数
成员函数外部通过 对象.运算符 来调⽤某个对象的函数
本地变量
定义在函数内部的变量是本地变量
成员变量和本地变量⽣存期和作⽤域不同。本地变量定义⽣存期和作⽤域都是函数内部。成员变脸的⽣存期是对象的⽣存期,作⽤域是类内部的成员函数。
1.4 对象初始化
默认给成员变量零值;
函数重载
⼀个类可以有多个构造函数,只要它们参数表不同。
创建对象的时候给出不同的参数值,就会⾃动调⽤不同对构造函数。
通过this()还可以调⽤其他构造函数。
⼀个类⾥同名但是参数表不同的函数构成了重载关系。
VendingMachine() //构造函数
{
total= 0;
}
VendingMachine(int price) //重载
{this(); //调⽤那个没有参数的构造函数。但是这样只能⽤在函数的开始,且只能⽤⼀次。
this.price =price;
}
第2周 对象交互
2.1 对象交互
2.2 访问属性
封装,就是把数据和对这些数据的操作放在⼀起,并且⽤这些操作把数据掩盖起来,是⾯向对象的基本概念之⼀,也是最核⼼的概念。
我们有⼀个⾮常直截了当的⼿段来保证在类的设计的时候做到封装:
所有的成员变量必须是private的,这样就避免别⼈任意使⽤你的内部数据;
所有public的函数,只是⽤来实现这个类的对象或类⾃⼰要提供的服务的,⽽不是⽤来直接访问数据的。除⾮对数据的访问就是这个类及对象的服务。简单地说,给每个成员变量提供⼀对⽤于读写的get/set函数也是不合适的设计。
Private
private关键字只能⽤于成员变量/成员函数。private的变量和函数只能在类的内部访问。
只有两个地⽅能⽤private的东西:
成员函数(⽐如构造函数,main函数…)
成员变量的定义可以⽤已经定义的成员变量
public classDisplay {private int value = 0;private int limit = value;//可以使⽤已经定义的成员变量
...java程序设计基础视频
注意:同⼀个类不同对象可以互相访问别⼈的私有的成员变量。私有的限制是对类⽽不是对对象。
Public
其他地⽅可以⽤
public类:
源代码⽂件名必须和public类名字相同。
Friendly
如果没有public和private => friendly
和它位于同⼀个包的其他类可以访问。
Protected
2.3 包
包:类点管理机制
⽤⽂件夹结构管理包
包名中的点代表⽂件夹层次
2.4 类变量
类变量
static
不属于任何⼀个对象,属于类。
如何访问:
可以从类访问,也可以从对象访问。就只有这么⼀个变量,每个对象都可以访问,⼀旦⼀个对象⾥修改了,在别的对象⾥再调⽤它它的值也是已经修改的。
类函数
属于类的函数。
类函数⾥只能访问类函数、类变量,不能使⽤对象的东西。
Static成员的初始化和对象的创建没有关系。它只能在类的装载的时候初始化⼀次。
第3周 对象容器
3.1 顺序容器
容器类
private ArrayList notes = new ArrayList();
⽤来存放String的ArrayList,是⼀个泛型类,是⼀个容器类。
容器类是⽤来存放对象的,可以存放任意数量的对象。
容器类定义的时候需要两个类型
容器的类型 e.g.ArrayList
元素的类型(在容器⾥放什么东西) e.g.String
ArrayList可以直接⽤System.out.println();直接输出。
3.2 对象数组
对象数组中的每个元素都是对象的管理者,⽽⾮对象本⾝。
当创建⼀个对象数组后,对象还不存在,还要把每个对象创建出来,然后⾥⾯的东西才有⽤。
容器类可以⽤for-each循环。
v=a[0],指v和a[0]共同管理a[0]所管理的对象。
3.3 集合容器 Set
就是数学当中“集合”的概念
没有重复的元素
没有顺序
Set可以直接⽤System.out.println();直接输出。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论