类和对象
一、类和对象的创建
1.类的属性和行为
代码如下(示例):
public static class Person{
//属性
String name;
int age=1;
boolean isMale;
//方法
public void eat(){
System.out.println("人吃饭");
}
public void work(){
System.out.println("工作");
}
public void talk(String language ){
System.out.println("说话的语言是:"+language);
}
}
2.对象的创建
代码如下(示例):
PPerson p1= new Person();
p1.name="Tom";
p1.age=18;
//调用方法
p1.eat();
p1.work();
p1.talk("English");
二 、类中的属性和局部变量的对比
成员变量vs局部变量
相同:
- 定义变量的格式相同
- 先声明,后使用
- 变量都有其自己的作用域
不同:
- 在类中声明的位置不同
- 成员变量可以加权限修饰符,private,public,protect。局部变量不可以使用
- 默认初始化值不同,成员变量
- 成员变量放在堆空间,局部变量放在栈空间
class User{
//成员变量 name ,age,ismale
String name;
int age;
boolean isMale;
public void talk(String language){//language:形参
System.out.println("说话用"+language+"进行交流");
}
public void eat(){
String food="米饭";//局部变量
System.out.println("吃"+food);
}
}
三 、类中方法的声明和使用
现在类中定义,然后调用,参考一下具体代码
四、类和对象的练习
1.person类的练习
public class Person {
String name;
int age;
int sex;
public void study(){
System.out.println("我在学习");
}
public void showage(){
System.out.println(age);
}
public int addage(int i){
age=age+i;
return age;
}
}
public class PersonTest {
public static void main(String[] args) {
Person p1=new Person();
p1.name="tom";
p1.age=18;
p1.sex=1;//1代表男 ,0代表女
p1.study();
p1.showage();
p1.addage(2);
p1.showage();
}
}
2.circle类的练习
package com.marui.contact;
public class CircleTest {
public static void main(String[] args) {
Circle c1=new Circle();
c1.radius=2;
double area=c1.findArea();
System.out.println(area);
}
}
class Circle{
//属性
double radius;
public double findArea(){
double area=Math.PI*radius*radius;
return area;
}
}
3.对象数组的练习
定义类student类,包含3个属性:学号numbre,年级state,成绩score。创建20个学生对象,学号为1到20,年级和成绩都由随机数决定
问题一:打印3年级的学生信息
问题二:使用冒泡排序按学生成绩排序
public class StudentTest {
public static void main(String[] args) {
//声明一个student数组
Student[] stus= new Student[20];
for(int i=0;i<20;i++){
//没个都要new,这里和c++结构体不同
stus[i]=new Student();
stus[i].number=(i+1);
//年级[1,6]
stus[i].state=(int)(Math.random()*(6-1+1)+1);
stus[i].score=(int)(Math.random()*(100-0+1));
}
//遍历学生数组
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年级学生的信息
for(int i=0;i<stus.length;i++){
if(stus[i].state==3) System.out.println(stus[i].info());
}
//冒泡排序
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;
}
}
}
System.out.println("*******************************");
//遍历学生数组
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());
}
}
}
class Student{
int number;
int state;
int score;
public String info(){
return number+","+state+","+score;
}
}