Java——static关键字

145 

package com.Apr.fifteen;

/**
 * 
 * @author Sam
 *
 *         "中国人"类
 *
 */

public class Chinese {

	// 身份证号【每一个对象的身份证号不同】
	// 实例变量
	String id;

	// 姓名【每一个对象的姓名不同】
	// 实例变量
	String name;

	// 国籍【每一个对象由于都是由"Chinese类"实例化的,所以每一个中国人的国籍都是"中国"】
	// 无论通过Chinese类实例化多少个java对象,这些java对象的国籍都是"中国"
	// 实例变量【实例变量是一个java对象就有一份,100个java对象,就有100个country】,分析这种设计方式有什么缺点?
	// 实例变量存储java对象内部,在堆内存当中,在构造方法执行的时候初始化。
	// 所有的中国人的国籍都是"中国",这里声明为实例变量显然是不合适的,太浪费内存空间,没必要让每一个对象都保留一份"国籍"内存。
	String country;

	// 构造函数
	public Chinese() {
		/*
		 * this.id = null; this.name = null; this.country = null;
		 */
	}

	public Chinese(String id, String name, String country) {
		this.id = id;
		this.name = name;
		this.country = country;
	}
}
package com.Apr.fifteen;

public class ChineseTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 创建中国人对象1
		Chinese zhangsan = new Chinese("1", "张三", "中国");
		System.out.println(zhangsan.id + "," + zhangsan.name + "," + zhangsan.country);

		// 创建中国人对象2
		Chinese lisi = new Chinese("2", "李四", "中国");
		System.out.println(lisi.id + "," + lisi.name + "," + lisi.country);

		// 创建中国人对象3
		Chinese wangwu = new Chinese("3", "王五", "中国");
		System.out.println(wangwu.id + "," + wangwu.name + "," + wangwu.country);
	}

}

package com.Apr.fifteenn;

/**
 * 
 * @author Sam
 *
 *         什么时候成员变量声明为实例变量呢? 
 *         -所有对象都有这个属性,但是这个属性的值会随着对象的变化而变化【不同对象的这个属性具体的值不同】
 * 
 *         什么时候成员变量声明为静态变量呢? 
 *         -所有对象都有这个属性,并且所有对象的这个属性的值是一样的,建议定义为静态变量,节省内存的开销。
 *
 *         静态变量在类加载的时候初始化,内存在方法区中开辟。
 *         访问的时候不需要创建对象,直接使用"类名.静态变量名"的方式访问。
 *
 *         关于java中的static关键字: 
 *         1、static英语单词翻译为静态的
 *         2、static修饰的方法是静态方法
 *         3、static修饰的变量是静态变量
 *         4、所有static修饰的元素都称为静态的,都可以使用"类名."的方式访问,当然也可以用引用.的方式访问【但不建议】
 *         5、static修饰的所有元素都是类级别的特征,和具体的对象无关。
 *
 */

public class Chinese {

	// 身份证号【每一个对象的身份证号不同】
	// 实例变量
	String id;

	// 姓名【每一个对象的姓名不同】
	// 实例变量
	String name;

	// 国籍【所有对象国籍一样,这种特征属于类级别的特征,可以在变量前添加static关键字修饰】
	// 静态变量,静态变量在类加载的时候初始化,不需要创建对象,内存就开辟了。
	// 静态变量存储在方法区内存当中。
	static String country = "中国";

	// 构造函数
	public Chinese() {
		/*
		 * this.id = null; this.name = null; this.country = null;
		 */
	}

	public Chinese(String id, String name) {
		this.id = id;
		this.name = name;
	}
}

 

package com.Apr.fifteenn;

public class ChineseTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 创建中国人对象1
		Chinese zhangsan = new Chinese("1", "张三");
		System.out.println(zhangsan.id + "," + zhangsan.name + "," + Chinese.country);

		// 创建中国人对象2
		Chinese lisi = new Chinese("2", "李四");
		System.out.println(lisi.id + "," + lisi.name + "," + Chinese.country);

		// 创建中国人对象3
		Chinese wangwu = new Chinese("3", "王五");
		System.out.println(wangwu.id + "," + wangwu.name + "," + Chinese.country);

		System.out.println(Chinese.country);
		System.out.println(zhangsan.country);
		zhangsan = null;
		// 所有静态的数据都是可以采用类名.,也可以采用引用.,但是建议采用类名.的方式访问。
		// 采用引用.的方式访问的时候,即使引用是null,也不会c出现空指针异常。因为访问静态的数据不需要对象的存在。
		System.out.println(zhangsan.country);

	}

}

146

package com.Apr.fifteennn;

/**
 * 
 * @author Sam
 * 
 *         可以使用static关键字来定义"静态代码块":
 *
 *         1、语法格式: static{ java语句; }
 *
 *         2、静态代码块在类加载是执行,并且只执行一次。
 * 
 *         3、静态代码块在一个类中可以编写多个,并且遵循自上而下的顺序依次执行。
 *
 *         4、静态代码块的作用是什么?怎么用?用在哪儿?什么时候用? 
 *         		-这当然和具体的需求有关,例如项目中要求类加载的时刻/时机执行代码完成日志的记录。
 *         		那么这段记录日志的代码就可以编写到静态代码块当中,完成日志记录。
 *
 *         		- 静态代码块是java为程序员准备一个特殊的时刻,这个特殊的时刻被称为类加载时刻。若
 *         		希望在此刻执行一段特殊的程序,这段程序可以直接放到静态代码块当中。
 * 
 *         5、通常在静态代码块当中完成预备工作,先完成数据的准备工具,例如:初始化连接池,解析XML配置文件...
 *
 */

public class StaticTest01 {

	static {
		System.out.println("类加载-->1");
	}

	static {
		System.out.println("类加载-->2");
	}

	static {
		System.out.println("类加载-->3");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("main begin");
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值