java学习(3)

面向对象设计思想
1.考虑问题涉及哪些个类和对象;
2.分析类和对象所需要具有的属性和方法;
3.类和类之间具备了怎样的关系;

成员变量若未初始化,系统会默认为其初始化;而局部变量未对其初始化则无法使用;

引用:相当于指针(一小块内存指向一大块内存)
对象是通过引用new出来的,存在堆内存里;
引用new出来的对象中是该对象独有的属性;
内存分析
构造方法

	
	public class Person {
		
		int id;
		int age =20;
		//构造方法(和类同名,没有返回值)
		//构建对象的模板
		Person(int _id,int _age){
			id = _id;
			age = _age;
			
		}
		
		/*常见错误:前面不能加任何返回值,加返回值变为普通方法
		 * void Person(int _id,int _age){
			id =  _id;
			age = _age;
		}
		 */
		 
		//new + 构造方法==创建对象
		//调用构造方法来创建对象,_id,_age在栈内存中赋值,
		//传递给创建的对象,完成对新建对象的创建,之后回收构造方法调用后的“垃圾”;
		public static void main(String[] args){
			Person Tom = new Person(1,25);
			//若已经指定某种形式的构造方法,系统不会添加默认形式的构造方法,
			//也就无法调用,
			//例如下面的调用形式无法执行
			
			 /*Person jerry = new Person();
			 jerry.id = 1;
			 jerry.age = 22;
			 */
			
			Point p = new Point();
			//p.x==p.y==0 系统默认值为0
			//System.out.print(p.x);
			//System.out.println(p.y);
		}
	}
	class Point{
		int x;
		int y;
		
		Point(){}//系统自动设定的构造方法
	}

约定俗成的命名规则:
1.类名首字母大写;
2.方法名,参数名首字母小写;
3.运用驼峰标识

class BirthDate {
	int day;
	int month;
	int year;
	
	public BirthDate(int _d,int _m,int _y){
		day = _d;
		month = _m;
		year = _y;
	}
	public void setDay(int _d){
		day = _d;
	}
	public void setMonth(int _m){
		month = _m;
	}
	public void setYear(int _y){
		year = _y;
	}
	public int getDay(int _d){
		return _d;
	}
	public int getMonth(int _m){
		return _m;
	}
	public int getYear(int _y){
		return _y;
	}
	
}
public class Test {
	public void change1(int i){
		i = 1234;
	}//i值改为1234后被回收,over
	public void change2(BirthDate d){
		d = new BirthDate(2,3,2020);
		//test.change2(d2);  d2调用时,d先指向d2对象,
		//再创建一个新的对象,但方法结束后被回收,不会改变d2中值
	}
	public void change3(BirthDate d){
		d.setDay(22);//在当前对象引用下真正的改变了值
	}
	public static void main(String[] args){
		Test test = new Test();
		int date = 9;
		BirthDate d1 = new BirthDate(7,7,1970);
		BirthDate d2 = new BirthDate(1,1,2000);
		test.change1(date);
		test.change2(d2);
		test.change3(d2);
		System.out.println("d1:"+d1.day+"-"+d1.month+"-"+d1.year);
		System.out.println("d2:"+d2.day+"-"+d2.month+"-"+d2.year);
		
	}
}
//d1:7-7-1970
//d2:22-1-2000

在这里插入图片描述

class Points{
	double x;
	double y;
	double z;
	//构造方法
	public Points( double _x,double _y,double _z){
		x = _x;
		y = _y;
		z = _z;
	}
	
	//set方法
	public void setX(double _x){
		x = _x;
	}
	public void setY(double _y){
		y = _y;
	}
	public void setZ(double _z){
		z = _z;
	}
	
	public double getDistance(Points p){
		return (x-p.x)*(x-p.x) +(y- p.y)*(y-p.y) +(z- p.z)*(z-p.z);
	}//调用它的点到当前点对象的距离
	
}
public class TestPoint {
	public static void main(String[] args){
		Points p1 = new Points(1.0,2.0,3.0);
		Points p2 = new Points(1.0,-3.0,3.0);
		double d = p1.getDistance(p2);
		System.out.println(d);
		p1.setX(3.0);
		System.out.println(p1.getDistance(p2));
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值