Java基础--类

package test.java15;

/**
 * 类描述客观世界里某"一类"对象的事物特性(属性和行为)(某一个类事物的集合和抽象),而对象则是类的具体存在。
 * 类也模板
 * 类-一般来说:构造函数,属性,方法(行为)和代码块。
 */

/**
 * 成员包括:属性和方法
 * 类的结构:
 * 访问修饰符  类名{
 * 
 *   //构造函数
 *   访问修饰符  类名(){};
 *   访问修饰符  类名(参数列表){};
 *   
 *   //属性定义
 *   【访问修饰符】  【修饰词(static final)】  数据类型 变量名 = 值;
 *   【访问修饰符】  【修饰词(static final)】  数据类型 变量名 ;
 *   
 *   //方法
 *   【访问修饰符】  【修饰词(static final)】  返回值  方法名{
 *     //方法体
 *   }
 *   
 * }
 *
 */
public class Student {
	/**
	 * 属性和方法
	 * 访问修饰符[private publie protected 缺省的]   修饰词(static ,final ,transient,volatile)   数据类型  = 字面值;
	 * 在一个类中,属性和方法又分为两种情况:
	 * 静态成员和非静态成员
	 * 静态成员是属于类本身的,不属于对象=--共享属性和方法
	 * 
	 * 静态成员在编译的时候就已经确定内存空间的大小,和当前类本身,存放入静态区中。---栈区
	 * 非静态成员,在new在申请空间地址的时候 创建的=---堆区
	 * 
	 * 总结:
	 * 1: 非静态方法即可调用静态成员,也可以调用非静态元素
	 * 2:静态方法中只能调用静态成员
	 * 3:静态成员,一定要通过类去调用
	 * 4:静态成员属于类,他不能用this关键字
	 */
	//属性--全局变量
	/**
	 * 全局变量--定义在方法以外,类以内的变量
	 * 全局变量可以不用赋值
	 * byte short int long  默认0
	 * float double 默认 0.0
	 * boolean 默认 false
	 * char \u0000  空格
	 * 如果是封装数据类型和类,默认 null
	 * 不赋值,就使用它们的默认值
	 */
	private String name;
	private static int age; //静态属性
	private Double sal;//非静态属性
	
	//构造函数
	public Student(String nameString){
		System.out.println("您使用的类名字==="+nameString);
	}
	
	//非静态方法
	public void buyBook(Double money) {
		/**
		 * 局部变量--定义在方法或者代码块以内的变量
		 * 1:如果使用了一定要赋值
		 * 2:局部变量会随着方法执行完毕,生命周期结束,以作用域{}为周期,{}以外就消亡
		 * 3:在开发过程中,尽量避免全局变量与局部变量重名
		 * 
		 */
		Double sal = 12000D; //局部变量
		System.out.println(this.name+"工资"+this.sal+",买了一本书!"+"花了"+money);
		System.out.println(name+"工资"+sal+",买了一本书!"+"花了"+money);
	}
	
	//静态方法
	public static void staticDemo() {
		System.out.println(Student.age);
//		System.out.println(name); //静态方法调用非静态属性,会编译错误,并且不能使用this关键字
	}
	
	public static void main(String[] args) {
		//对象---肯定类有关系
		//对象是通过类的构造函数(析构函数)去堆里去申请出来一块内存空间地址,申请过程---其实就是非静态成员拷贝的过程.
		Student student= new Student("学生类");
		//只有对象才能给属性赋值,和调用方法
		student.name = "fyl";
		Student.age = 11; //建议不适用对象的方式赋值,直接使用类的方式
//		student.age = 12; //对象的方式也可以
		student.sal = 10000D;
		
		//下面语句就是通知cpu执行方法体的过程,形成独立的内存空间,里面数据类型是随着方法执行完毕,而结束
		student.buyBook(200.6D);
		Student.staticDemo();
	}

}

运行结果

您使用的类名字===学生类
fyl工资10000.0,买了一本书!花了200.6
fyl工资12000.0,买了一本书!花了200.6
11

了解的知识点--代码块

package test.java03;

public class Test {
	private static String name;
	private int age;
	
	//构造函数
	public  Test(int age) {
		this.age = age;
		System.out.println("3---我是构造函数");
	}
	/**
	 * 代码块--初始化成员变量的--编译阶段已经写入java堆
	 * 执行顺序:
	 * 静态代码块>>>普通代码块>>>构造函数
	 * 包括静态代码块和普通代码块
	 */
	
	//普通代码块--即可初始化非静态成员变量,也可初始化静态成员变量
	{
		age = 30;
		name = "yy";
		System.out.println("2---我是普通代码块");
	}
	
	//静态代码块--只能初始化静态成员变量
	static {
		name = "ff"; //不能定义age
		System.out.println("1---我是静态代码块");
	}
	
	public static void main(String[] args) {
		Test test = new Test(10);
		System.out.println(Test.name+"======="+test.age);
	}
}
输出结果

1---我是静态代码块
2---我是普通代码块
3---我是构造函数
yy=======10




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值