3. 3.1 变量class PartialSum {
/* * Print out the Partial Sum for n≤50 */
public static void main(String[] args) {
int s = 0;
int i = 1;
while (i <= 50) {
s = s + i * i; /* New PartialSum is old PartialSum plus i2 */
i = i + 1; // new term number
System.out.println(s);
}
}
} 打印无穷级数 的部分和 ,给出n《50的所有值
所有关键字均小写,所有变量名均大小写敏感
println是一种名复用(overload)的方法,名复用方法可以接收不同类型的参数类名初等类型在说明时,若以后要访问该变量则需赋初值。如果仅定义,可以不赋初值。While循环接收一个int值
4. 3.2 代码中的注释package PartialSum;
/** Print out the Partial Sum for n≤50 */
public class PartialSum {
public static void main(String[] args) {
int s = 0;
int i = 1;
while (i <= 50) {
s = s + i * i; /* New PartialSum is
old PartialSum plus i2 */
i = i + 1; // new term number
System.out.println(s);
}
}
} 主要有三种
1. “//”后面加上直到行末的一段文字,会被编译器略去
2. “/*”和“*/”间的一段文字,可以注释多行
3. “/**”和“*/”间的一段文字,用于描述其后说明中的内容。可被javadoc
工具提取以生成HTML文本。123
5. 常量是直接指出的值,不由计算得到的,在程序执行中保持不变
命名常量:在一个类中,为一个常量给一个命名
Java中创建有名常量是用static和final来说明一个变量,在说明中提供一个初始化值
可用于描述特定值的含义
一处定义,一处修改,程序的维护更加方便
花色的选择可用Suit.HEARTS,Suit.SPADES等存取3.3 有名常量static final float π = 3.1416;
static final double π = 3.14159265358979323846;Class Suit{
final static int CLUBS = 1;
final static int DIAMONDS = 2;
final static int HEARTS = 3;
final static int SPADES = 4;
6. 使用了π字符作为常量的名字,在大多数程序设计语言中,标识符被严格限制在ASCII字符集中的字母和数字
Java用Unicode来编写Java代码(Unicode是一个国际标准字符集)
Java程序在编译时自动将ASCII和ISO-Latin-1字符转变为Unicode字符3.3 有名常量- 3.3.1 Unicode字符static final float π = 3.1416;
static final double π = 3.14159265358979323846;字符集位数Unicode16ASCII7ISO-Latin-18
8. 改进的打印无穷级数的程序,要求在输出结果中用“*”标注所有偶数的数字序列3.4 控制流class ImprovedPartialSum {
/** Print out the first few PartialSum
numbers marking evens with a”*” */
static final int MAX_INDEX = 10 ;
public static void main(String[] args) {
int s = 0;
String mark;
for (int i = 1 ; i < MAX_INDEX; i++) {
s = s + i * i;
if (s % 2 == 0)
mark = * ;
else
mark =;
System.out.println(i + : + s + mark);
}
}
} 程序运行结果:
1: 1
2: 5
3: 14 *
4: 30 *
5: 55
6: 91
…
static:一个类仅此一个变量,而不是每个对象都有一个。for语句三要素:初始化、条件判断和控制%:取余数整数 + 字符串 + 整数 + 字符串
10. 3.5.1 创建对象 Point lowerLeft = new Point()
Point upperRight = new Point()
Point middlePoint = new Point()
lowerLeft.x = 0.0;
lowerleft.y = 0.0;
upperRight.x = 1280.0;
upperRight.y = 1024.0;
middlePoint.x = 640.0
middlePoint.y = 512.0; 创建对象给对象赋值使用包含“new”关键字的表达式创建对象,返回该对象的引用。从一个类定义创建一个对象被称为实例化
Java中的对象都通过“对象引用”(object reference)来访问
持有一个对象的变量实质上表示了对该对象的引用,当变量不再引用任何对象时,该对象引用就是null
多数情况下,对象和对象引用的区别被忽略,与C/C++不同。
11. 类变量:同类的各对象之间共享的变量(域)。是类的变量,非对象的变量
Java中用static来说明一个域是类域,通常被称为静态域
不论是否创建对象,静态域都存在
System.out.println:out是System类中的一个静态域
静态域的调用方式是:类名.域名 or 类名.域名.方法名(调用静态域的方法) 3.5.2 静态域或类域 public static Point origin = new Point();
12. 面向对象技术的一个好处是“封装性”,即把类的实现隐藏在作用于内部数据的操作中
将数据隐藏在方法后面,使其他对象只能通过方法来操作数据
安全性
方便维护
简化设计
方法除其名称外,可以有0个或多个实参
方法可返回某种类型的一个值,也可以用void表示不返回任何值
方法的基调:方法的名称和参数的数目和类型
方法的语句用{}括起来,并置于方法基调的说明之后
方法所属类的域和其它方法可直接用其名,而无需显式地冠以对象引用
3.6 方法和参数 public void clear() {
x = 0;
y = 0;
}不返回值基调方法的语句
16. 3.7 数组Class Card{
public int suit;
public int number;
}
class Deck {
final int DECK_SIZE = 52;
Card[] cards = new Card[DECK_SIZE];
public void print(){
for(int i = 0; i < cards.length; i++)
System.out.println(cards[i]);
}
}数组:同一类型变量的有序集合
每个数组对象有一个域length,表示数组中元素的数量
数组的长度在其使用过程中不能改变
数组下标范围:0~length-1的整数
通过数组下标来访问数组中的元素,若下标超过范围,将引发IndexOutBoundsException异常说明一个数组:类型[] 变量名数组中每个元素为null数组名后用[]将所需元素的下标括起来
20. 用super.方法名(实参表)调用超类中的方法,查找顺序是沿超类从下而上开始
1. super:超类的引用
2. this: 当前对象的引用
super方法的本质是从类的层次结构由下自上寻找方法名,直至找到,再调用执行
当调用一个方法时,对象的实际类型,而不是对象引用的类型3.9.2 调用超类中的方法 Point p = new Pixel();
p.clear();
调用的是Pixel自己的clear方法超类:super超类:super当前类:current超类……
21. 3.10 接口接口的本质:一个接口的目的是集中一组操作(抽象方法),形成一组类所提供的一组相关服务
接口(interface):只包含方法的说明。说明支持哪些方法,以及这些方法应该做什么
接口提供了一种方式来对操作进行划分,并描述各组特征
一个接口用一个名字代表一组操作,不能直接实例化产生对象
可实例化的类,使用接口来规范其实例所提供的不同的服务
抽象来说:接口做为一组类的行为抽象的服务规范,在一组服务的使用者和实现者(服务提供者)之间建立一种约定
使用者不关心具体的实现,而能使用该组服务
要使用接口中的方法时,只需用接口名来声明一个对象,而不关心实现了接口的类的名字
程序可用实现接口的对象的引用调用接口中定义的方法 interface Lookup {
/** Return the value associated with the name,
or null if there is no such value */
Object find(String name);
}
22. 一个类可实现多个接口
一个类的超类型(supertype):它所继承的类和它所实现的接口及这些 类和接口的超类型3.10 接口 class SimpleLookup implements Lookup {
private String[] Names;
Private Object[] Values;
public Object find(String name){
for (int i=0;i