第六节答案: 1.b 2.c 3.b 4.
代码语言:javascript复制package com.makotojava.intro;
public class Person {
private String name;
private int age;
private int height;
private int weight;
private String eyeColor;
private String gender;
public String getName() { return name; }
public void setName(String value) { name = value; }
// Other getter/setter combinations...
public int getAge() { return age; }
public void setAge(int value) { age = value; }
public int getHeight() { return height; }
public void setHeight(int value) { height = value; }
public int getWeight() { return weight; }
public void setWeight(int value) { weight = value; }
public String getEyeColor() { return eyeColor; }
public void setEyeColor(String value) { eyeColor = value; }
public String getGender() { return gender; }
public void setGender(String value) { gender = value; }
public String toString() {
String ret = "Name: " getName() ", "
"Height: " getHeight() ", "
"Weight: " getWeight() ", "
"Eye Color: " getEyeColor() ", "
"Gender: " getGender();
return ret;
}
}
5.
代码语言:javascript复制package com.makotojava.intro;
import static org.junit.Assert.*;
import java.util.logging.Logger;
import org.junit.Test;
public class PersonTest {
@Test
public void testPerson() {
.
.
.
}
@Test
public void testToString() {
Person p = new Person("Joe Q Author", 42, 173, 82, "Brown", "MALE");
Logger l = Logger.getLogger(PersonTest.class.getName());
l.info("toString(): " p.toString());
}
实例化和操作字符串,并探讨算术运算符
本节学习目标
- 学会多种方式实例化一个字符串对象和设置它的值
- 理解字符串串联和方法串
- 熟悉java的算术运算符操作
字符串
到目前为止,你已经遇到过几个String类型的变量了。String类型与很多方法供你操作字符串。
这里有一对方法来创建字符串:
代码语言:javascript复制String greeting = new String("hello");
String greeting = "hello";
正如上面展示的一样,你可以使用new关键字初始化一个字符串对象,也可以使用字面量为一个字符串对象赋值。
连接字符串
通过字符串你可以做很多事情,String类包含很多有用的方法。甚至不是用一种方法,你都已经在Person类里的testPerson方法中做了一些有趣的事了,比如连接两个字符串:
代码语言:javascript复制l.info("Name: " p.getName());
“ ”在java语言中也可以是字符串的连字符号,可以用于拼接连个字符串。
字符串连接练习
现在,你可以在Perosn类中练习使用连接两个字符串了。在这一点上,你有一个名字的实例变量,但它在商业应用有FirstName和LastName。如果有另一个对象访问它的全名,你可以连接FirstName和LastName。
回到Eclipse工程,添加一个属性变量firstName和lastName。
代码语言:javascript复制//private String name;
private String firstName;
private String lastName;
方法链调用
在上面基础上generate新属性的getter、setter方法。增加一个获得全名的方法:
代码语言:javascript复制public String getFullName() {
return getFirstName().concat(" ").concat(getLastName());
}
上面的代码举例说明了方法链的调用。链式调用是一个不可变的对象像字符串的常用技术,对于一个不可变对象的修改,总是返回修改后的值(但是要求不改变最初对象的值)。
操作符
你已经知道了在java语言中使用”=”操作符赋值给一个变量。正如你所期望的一样,java语言可以做算术运算。
java语言中有两种类型的操作符:
- 一元操作符: 只需要一个操作数
- 二元操作符: 需要两个操作数
表1总结了java算数操作符:
操作符 | 用法 | 描述 |
---|---|---|
| a b | a与b的和 |
| a | 如果a是byte、short、char类型则会使转为int类型 |
- | a - b | a与b的差 |
- | -a | a的负数 |
* | a * b | a与b的乘积 |
/ | a / b | a除以b,注意整形时:3/2=1 |
% | a % b | a除以b的余数 |
| a | a自增1,返回a增值之前的值 |
| a | a自增1,返回a增值之后的值 |
– | a– | a自减1,返回a减1之前的值 |
– | –a | a自减1,返回a减1之后的值 |
= | a = b | 等价于 a = a b |
-= | a *= b | 等价于 a = a - b |
*= | a *= b | 等价于 a = a * b |
%= | a %= b | 等价于 a = a % b |
其他的操作符
除表1之外,在java语言中你可能还会遇见其他操作符,例如:
- 点符(.), 指定包名或调用方法时可以使用
- 圆括号(()), 划定一个逗号分隔的参数列表的方法
- new关键字, 紧接着构造器的名字常用于初始化一个对象