Java知识点详解——第五章:对象和类

对象

        对象是构成现实世界的基本单位,由属性和方法构成。

属性:对象具备的外观特征或其它特点。
方法:对象具备的行为动作或功能。

        类是抽象的,是对象的类型,是将多个拥有相同属性的方法和对象所抽离出来的模板。

        Java程序是由类构成的,类用于模拟现实生活中的对象。因此,类也是由属性和方法构成。

import java.util.Scanner;

/**计算器类*/
public class Calculator {
	
	//要计算的数值
	double num1;
	double num2;
	//运算符
	int opt;
	
	/** 用于计算的方法 */
	public double cal(){
		//定义返回的计算结果
		double result = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要计算的第一个数:");
		num1 = sc.nextDouble();
		System.out.println("请输入要计算的第二个数:");
		num2 = sc.nextDouble();
		System.out.println("请选择执行的运算:1.加法 2.减法 3.乘法 4.除法");
		opt = sc.nextInt();
		//判断运算符
		switch(opt){
		case 1:
			result = num1+num2;
			break;
		case 2:
			result = num1-num2;
			break;
		case 3:
			result = num1*num2;
			break;
		case 4:
			result = num1/num2;
		}
		return result;
	}
	
	/**加法计算 */
	/**需要相加的两数使用参数传入,参数编写方式:参数类型  参数名
	一个方法可以有任意多的参数,多个参数使用逗号间隔*/
	public double addition(int a, int b){
		//方法内部可以直接访问参数
		int result = a+b;
		return result;
	}
}

对象和类区别:

  1. 对象是实体,类是抽象的;public class Demo和main入口方法例外
    栈→指针→引用内存堆中实例化后的对象数据→堆
    计算机中的实体和抽象的区分在于是否在内存中产生了数据。
  2. 类是对象的类型,包含了该类型所具备的所有共性的属性和方法。

类与对象的关联性:可以将类通过实例化,变成具体的对象。

类的属性在没有赋值的情况下具备默认值:

类型默认值
Stringnull
int0
double0.0
booleanfalse

        使用new创建对象的时候,JVM会根据类的结构对属性和方法进行分别构建,在构建属性的过程,如果属性变量没有值,则会创建默认值。
属性:又称为全局变量,也成为成员变量。
局部变量:方法内部定义的变量,局部变量允许和全局变量重名。如果需要访问全局变量(属性),需要通过“this.属性名”方式访问,this表示当前对象的指针。

开发过程中编写的每一个类相当于自定义数据类型的过程。

编写类的方法:

public class 类名{	//方法名命名方式参照变量的命名方式
	访问修饰符 返回值类型 方法名(参数列表)
	{
		//方法体
	}
}

方法可以分为:
        1.有返回值方法和没有返回值方法;
        2.带参(方法具备参数列表)方法和无参方法。

        void表示方法没有返回值,方法中的代码执行后没有产生新的数据。
        有返回值的方法必须在定义方式时声明返回的数据类型,使用关键字return后将返回return的数据,并终止。
        调用有返回值的方法时必须要使用变量接收返回值。

String wareName = name.buy();
System.out.println("购买的是"+wareName);

注:编写方法时应尽量确保方法业务的纯粹性,和方法无关的业务应尽量避免。如执行加减乘除运算,不需要在方法中使用接收。

使用方法带来的优点:

  1. 方法可以使业务结构分离,逻辑上更清晰,在代码维护时可以根据对应的方法堵路维护;
  2. 方法可以实现代码的复用。
import java.util.Random;
import java.util.Scanner;

public class LoginDemo {
	
	/**登录方法 */
	public void login(){
		Scanner sc = new Scanner(System.in);
		//输入用户名
		System.out.println("请输入用户名");
		String userName = sc.next();
		//输入密码
		System.out.println("请输入密码:");
		String password = sc.next();
		//获取验证码   在同一个类中,方法可以相互调用,调用时直接写上要调用的方法名即可
		String validateCode = createValidateCode();
		//输入验证码
		System.out.println("请输入验证码:("+validateCode+")");
		String code = sc.next();
		//校验数据
		boolean flag = validate(userName, password, code, validateCode);
		//验证通过
		if(flag){
			//进入主菜单
			mainMenu();
		}
		else{
			System.out.println("数据验证失败!");
			//回调方法,重新执行一次登录的功能
			login();
		}
	}
	
	/**生成4位数验证码的方法*/
	public String createValidateCode(){
		String validateCode = "";
		Random random = new Random();
		for(int i = 1; i <= 4; i++){
			//每次生成一个0-9的随机值
			int n = random.nextInt(10);
			//将生成的随机值拼接
			validateCode+=n;
		}
		//返回验证码
		return validateCode;
	}
	/**验证方法 */
	public boolean validate(String name, String pwd, String code, String validateCode){
		if(name.equals("admin") && pwd.equals("000") && code.equals(validateCode)){
			return true;
		}
		return false;
	}
	
	/**显示主菜单的方法*/
	public void mainMenu(){
		System.out.println("1. 个人中心");
		System.out.println("2. 商品分类");
		System.out.println("3. 购物车");
		System.out.println("4. 退出登录");
	}	
	/**测试访问*/
	public static void main(String[] args) {
		//实例化对象
		LoginDemo demo = new LoginDemo();
		//访问登录方法
		demo.login();
	}
}

注意事项:

  1. return的数据类型必须和方法声明的返回值类型一致;
  2. 只能返回单值;
  3. return后不应该出现其它语句。

带参数的方法注意点:

  1. 对各个参数使用逗号“,”分开;
  2. 使用方法时传入的参数数量、类型、和定义时保持一致。

注:NullPointerException 空引用(指针)异常。
出现该异常的原因是由于对值为null的对象,访问其属性或方法时引发的错误。

耦合性

表示程序中组件与组件的依赖性。
组件:构成一个完整程序的可重复使用的单位(类,方法)。
        一个优秀的程序设计应该尽量降低组件间的耦合性。
递归方法:在方法中回调该方法自身的过程。主要用于未知层次结构的数据挖掘,其效率并不高,原因在于每次递归调用的原方法体并没有在栈中释放空间,始终处于访问的状态,导致反复递归每次产生的方法未释放,最终引起栈内存的溢出。

Java中的数据类型:基本类型引用类型
所有Java类都是引用类型。

基本类型和引用类型的差异:

  1. 基本类型可以直接赋值使用,引用类型在使用时必须实例化;
  2. 基本类型的传值是将值的副本传入方法(即值传递),引用类型的传递是指针地址传递。

附:

try{
	Thread.sleep(2000);		//使用线程使当前程序延迟2S执行
}catch{
	e.printStackTrace();
}
快捷键功能
alt+/代码补全
ctrl+shift+F格式化代码
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值