练习一:
/*
* 要求:(1)创建Person类的对象,设置该对象的name、
age和sex属性,调用study方法,输出字符串
“studying”,调用showAge()方法显示age值,调用
addAge()方法给对象的age属性值增加2岁。
(2)创建第二个对象,执行上述操作,体会同一个类的
不同对象之间的关系。
*/
public class PersonTest {
public static void main(String[] args) {
Person p1=new Person();
p1.name="Tom";
p1.age=18;
p1.sex=1;
p1.study();
p1.showAge();//ctrl+鼠标;alt+←
int newAge=p1.addAge(2);
System.out.println(p1.name+"的新年龄为:"+newAge);
System.out.println(p1.age);//20
//******************************
Person p2=new Person();
p2.showAge();//0
p2.addAge(10);
p2.showAge();//10
p1.showAge();//20
}
}
public class Person {
//属性
String name;
int age;
int sex;
//1:男性,0:女性
//方法
public void study() {
System.out.println("studying");
}
public void showAge() {
System.out.println("age:"+age);
}
public int addAge(int i) {
age+=i;
return age;
}
}
练习二:
/*
* 利用面向对象的编程方法,设计类Circle计算圆的面积。
*/
//测试类
public class CircleTest {
public static void main(String[] args) {
Circle c1=new Circle();
c1.radius=2.0;
//方式一:
// double area=c1.findArea();
// System.out.println(area);
//方式二:
c1.findArea();
}
}
class Circle{
//属性
double radius;//半径
//方法
//方式一:(有返回值)
// public double findArea() {
// double area=Math.PI*radius*radius;
// return area;
// }
//方式二:(无返回值)
public void findArea() {
double area=Math.PI*radius*radius;
System.out.println("面积为:"+area);
}
}
/*
3.1 编写程序,声明一个method方法,在方法中打印一个10*8 的*型矩形,
在main方法中调用该方法。
3.2 修改上一个程序,在method方法中,除打印一个10*8的*型矩形外,再
计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法,
返回的面积值并打印。
3.3 修改上一个程序,在method方法提供m和n两个参数,方法中打印一个
m*n的*型矩形,并计算该矩形的面积, 将其作为方法返回值。在main方法
中调用该方法,接收返回的面积值并打印。
*/
练习三:
public class Exer3Test {
public static void main(String[] args) {
Exer3Test e1=new Exer3Test();
//3.1测试
// e1.method();
//3.2测试
// int area=e1.method();
// System.out.println("矩形的面积为:"+area);
//3.3测试
System.out.println(e1.method(5,9));
}
/* 3.1
public void method() {
for(int i=1;i<=10;i++) {
for(int j=1;j<=8;j++) {
System.out.print("* ");
}
System.out.println();
}
}
*/
/* 3.2
public int method() {
for(int i=0;i<10;i++) {
for(int j=0;j<8;j++) {
System.out.print("* ");
}
System.out.println();
}
return 10*8;
}
*/
public int method(int m, int n) {
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
System.out.print("* ");
}
System.out.println();
}
return m*n;
}
}
练习四:
/*
* 对象数组题目:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩
score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
提示:
1) 生成随机数:Math.random(),返回值类型double;
2) 四舍五入取整:Math.round(double d),返回值类型long。
*/
public class Exer4Test {
public static void main(String[] args) {
//声明一个Student类型的数组
Student[] stus=new Student[20];
for(int i=0;i<stus.length;i++) {
//给数组元素赋值
stus[i]=new Student();
//给Student对象的属性赋值
stus[i].number=i+1;
//年级:[1,6] 公式:(int)(Math.random()*(b-a+1)+a)//random是double型的值
stus[i].state=(int)(Math.random()*(6-1+1)+1);
//成绩:[0,100]
stus[i].score=(int)(Math.random()*(100-0+1)+0);
}
//遍历学生数组
for(int i=0;i<stus.length;i++) {
// System.out.println(+stus[i].number+","+stus[i].state+","+stus[i].score);
System.out.println(stus[i].info());
}
System.out.println("********************************");
//问题一:打印出3年级(state值为3)的学生信息。
for(int i=0;i<stus.length;i++) {
if(stus[i].state==3) {
System.out.println(stus[i].info());
}
}
System.out.println("*************************");
//问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
for(int i=0;i<stus.length-1;i++) {
for(int j=0;j<stus.length-1-i;j++) {
if(stus[j].score<stus[j+1].score) {
Student temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
for(int i=0;i<stus.length;i++) {
System.out.println(stus[i].info());
}
}
}
class Student{
int number;//学号
int state;//年级
int score;//成绩
//显示学生信息的方法
public String info() {
return "学号:"+number+",年级:"+state+",成绩:"+score;
}
}
练习四(优化)(将操作数组的功能封装到方法中)
public class Exer4Test {
public static void main(String[] args) {
//声明一个Student类型的数组
Student1[] stus=new Student1[20];
for(int i=0;i<stus.length;i++) {
//给数组元素赋值
stus[i]=new Student1();
//给Student对象的属性赋值
stus[i].number=i+1;
//年级:[1,6] 公式:(int)(Math.random()*(b-a+1)+a)//random是double型的值
stus[i].state=(int)(Math.random()*(6-1+1)+1);
//成绩:[0,100]
stus[i].score=(int)(Math.random()*(100-0+1)+0);
}
Exer4Test test=new Exer4Test();
//遍历学生数组
test.print(stus);
System.out.println("********************************");
//问题一:打印出3年级(state值为3)的学生信息。
test.searchState(stus,3);
System.out.println("*************************");
//问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
test.sort(stus);
test.print(stus);
}
//遍历Student1数组的操作(封装到方法里)
public void print(Student1[] stus) {
for(int i=0;i<stus.length;i++) {
System.out.println(stus[i].info());
}
}
//查找指定年级的数组
public void searchState(Student1[] stus,int state) {
for(int i=0;i<stus.length;i++) {
if(stus[i].state==state) {
System.out.println(stus[i].info());
}
}
}
//给Student1数组冒泡排序
public void sort(Student1[] stus) {
for(int i=0;i<stus.length-1;i++) {
for(int j=0;j<stus.length-1-i;j++) {
if(stus[j].score<stus[j+1].score) {
Student1 temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
}
}
class Student1{
int number;//学号
int state;//年级
int score;//成绩
//显示学生信息的方法
public String info() {
return "学号:"+number+",年级:"+state+",成绩:"+score;
}
}