黑马程序员-java类-java构造方法-java类数组

 <1.类及对象
1.用PowerDesigner设计java类模块
新建模块->单击进入类属性定义->设置模块名字->Attributes->
Operations->选择左上角的Properties进入添加参数->parameters设置内部参数

类的定义如下
  class 类名称 {
  属性:
  方法:
  }
  属性与之前的变量是一样的,数据类型上就是使用java的两种数据类型,基本数据类型和引用数据类型
  但是,此时在方法的定义上与之前直接使用主方法调用的时候声明不一致的是不再使用static关键字
范例:新建一个person类
class person{
String name;
int age;
public void tell{
System.out.println("姓名"+name+"年龄"+age+" ");
}
}
此时就已经定义出了一个类,类中的两个属性 name,age 一个说话的方法
对象的使用
类名 对象名称= null;  //静态定义
对象名称 =new 类名();
对象名称= new 类名();//动态定义
操作分为两种情况
  访问属性:对象名称.属性名 =值;
  访问方法:对象名称.方法()
package org.demo.java;
import java.util.*;
public class text {
private static class person{
String name;
int age;
public void tell(){
System.out.println("姓名"+name+"年龄"+age+" ");
}
}
public static void main(String[]args){
person p=new person();
p.name="王琪";
p.age=90;
p.tell();
}
}
范例2
package org.demo.java;
import java.util.*;
class person{
String name;
int age;
public void tell(){
System.out.println("姓名"+name+"年龄"+age+"A");
}
}
public class text {
private static class person{
String name;
int age;
public void tell(){
System.out.println("姓名"+name+"年龄"+age+"B");
}
}
public static void main(String[]args){
person p=new person();
p.name="王琪";
p.age=90;
p.tell();
}
}
类的创建与实例化和数组的创建和实例化是相同的
类的默认值为空
2.关于类的引用传递
package org.demo.java;
import java.util.*;
class Person{
String name;
int age;
public void tell(){
System.out.println("姓名"+name+"年龄"+age+"A");
}
}
public class text {
public static void main(String[]args){
Person per1= null;
Person per2= null;
per1= new Person();
per2= per1;
per1.age=20;
per2.age=30;
per1.name="张三";
per2.tell();
}
}
姓名张三年龄30A
  从本程序上总结
  1.一个栈内存空间只能引用一个堆内存空间,但是一个堆内存空间
  可以被多个栈内存空间引用。
  2.在java中不用的空间称为垃圾,等待GC回收。

习题:
/*
 * 
现在要求设计一个表示学生的类,要求学生里有三项成绩,计算机,数学,英语
要求可以求出品均分,最高最低分品均分 ,并且可以输出一个学生的完整信息
  1.属性 name,age,computer,english,math
  2.所有属性必须封装
  3.所有属性必须通过geter 和 seter访问
  4.如果需要增加构造方法,为属性赋值
  6.所有信息不能在类中输出
    在类、中不能出现System.out.println();语句
 * 
 * */ 
package org.demo.java;
import java.util.*;
class Person{
String name;
int age;
float computer;
float english;
float math;
public void setname(String name){
this.name=name;
}
public void setage(int age){
this.age=age;
}
public void setcomputer(float computer){
this.computer=computer;
}
public void setmath(float math){
this.math=math;
}
public void setenglish(float english){
this.english=english;
}
public String getname(){
return this.name;
}
public int getage(){
return this.age;
}
public float getcomputer(){
return computer;
}
public float  getenglish(){
return english;
}
public float getmath(){
return this.math;
}
public Person(String name,int age,int computer,int english,int math){
this.setname(name);
this.setage(age);
this.setcomputer(computer);
this.setenglish(english);
this.setmath(math);
}
public float sum(){
return (this.computer+this.english+this.math);
}
public float ave(){
return (this.sum()/3);
}
public float max(){
float max=(this.computer>this.english?this.computer:this.english);
max=(max>this.math?max:this.math);
return max;
}
public float min(){
float min=(this.computer<this.english?this.computer:this.english);
min=(min<this.math?min:this.math);
return min;
}
public String toString(){
return"姓名"+name+"年龄"+age+"\n\t计算机成绩"+computer+
"\n\t英语成绩"+english+"\n\t数学成绩"+math;
}
}
public class text {
public static void main(String[]args){
Person per1= null;
Person per2= null;
per1= new Person("王琪",20,60,70,35);
per2= new Person("QI",20,34,46,50);
System.out.println(per1);
System.out.println("最高分 :" + per1.max());
System.out.println("最低分" + per1.min());
System.out.println("品均分" + per1.ave());
System.out.println("\n"+per2);
System.out.println("最高分 :" + per2.max());
System.out.println("最低分" + per2.min());
System.out.println("品均分" + per2.ave());
}
}    
姓名王琪年龄20
计算机成绩60.0
英语成绩70.0
数学成绩35.0
最高分 :70.0
最低分35.0
品均分55.0

姓名QI年龄20
计算机成绩34.0
英语成绩46.0
数学成绩50.0
最高分 :50.0
最低分34.0
品均分43.333332
3.总结
  1.类是对象的模板,对象是类的实例
  2.垃圾的产生
  3.对象的产生格式
    .声明对象:类名称 对象名称 = null; 如果直接使用此对象,会出现控指向异常。
    .实例化对象:对象名称 = new 类名称(),//开辟对堆存空间,才可以直接
4.封装型 :private 以及 seter getter
5.构造方法:
 .与类名称相同的方法
 .无返回值类型
 .如果一个类中没有明确的声明一个构造方法,则会自动生成一个无参的构造方法
 .构造方法允许重载
4.对象的比较
package org.demo.java;
import java.util.*;
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setname(String name){
this.name=name;
}
public void setage(int age){
this.age=age;
}
public String getname(){
return this.name;
}
public int getage(){
return this.age;
}
public boolean compare(Person per){
if(this==per)return true;
else if(this.name.equals(per.name) && this.age==per.age)return true;
else return false;
}
}
public class text {
public static void main(String[]args){
Person per1= null;
Person per2= null;
per1=new Person("王琪",30);
per2=new Person("王琪",30);
if(per1.compare(per2)){
System.out.println("是同一个人");
}
else{
System.out.println("不是同一个人");
}
}
}
是同一个人
this--当前调用方法的对象,即当前对象

5.对象数组
package org.demo.java;
import java.util.*;
class Person{
        private String name;
        private int age;
        public Person(){};
        public Person(String name,int age){
                this.name=name;
                this.age=age;
        }
        public void setname(String name){
                this.name=name;
        }
        public void setage(int age){
                this.age=age;
        }
        public String getname(){
                return this.name;
        }
        public int getage(){
                return this.age;
        }
        public boolean compare(Person per){
                if(this==per)return true;
                else if(this.name.equals(per.name) && this.age==per.age)return true;
                else return false;
        }
        public String toString(){
                return"姓名"+name+"年龄"+age;
        }
}
public class text {
        public static void main(String[]args){
                Person person[]=null;
                person=new Person[3];
                int i=0;
                for(Person x : person){
                        x=new Person(new String("wangqi"+i++),(30+i));
                }
                for(Person a:person){
                        System.out.println(a);                
                }
for(i=0;i<person.length;i++){
                        person[i]=new Person(new String("wangqi"+i),(30+i));
                }                
                for(Person a:person){
                        System.out.println(a);                
                }           
   }
}
结果为什么不用?

null
null
null
姓名wangqi0年龄31
姓名wangqi1年龄32 
姓名wangqi2年龄33 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值