1-3Java变量的类型

news/2025/1/15 19:42:49/文章来源:https://www.cnblogs.com/positive-boy/p/18402997

Java变量的类型

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:

type identifier =value,identifier1=value1,.....

格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。

以下列出了一些变量的声明实例。注意有些包含了初始化过程。

int a,b,c;//定义三个整型变量a,b,c,但是没有赋值
int a=3,b=2,c=4;//声明三个整数变量,并赋予初值。
double dou=2.3d;
boolean isDefault=true;
String name="admin";
float a=2.3333;
char c='A';

Java语言支持的变量类型有

  • 类变量:独立于方法外的变量,但是在类里面的变量。
  • 实例变量:独立于方法之外的变量,不过没有static修饰。
  • 局部变量:类的方法中的变量。
class Student{static String name="admin";//类变量boolean isDefault=true;//实例变量static final age=18;//静态变量void eat(){int a=3;//局部变量,只能在局部使用,在外面就不能引用了}
}

温馨提示:static只能修饰类里面,方法之外的变量,在本类里面都可以使用这个属性,在外面呢,可以通过类调用该方法和属性,但是不能修饰局部变量,因为局部变量他的周期只有方法里面。

Java局部变量

  • 局部变量声明在方法,构造方法或者语句块中;
  • 局部变量在方法,构造方法,或者语句块被执行的时候创建,但他们执行完成后,变量将会被销毁;
  • 访问修饰符不能用于局部变量,访问修饰符有:public,protected,privated,default;
  • 局部变量只能在它们的方法,构造方法,或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须进行初始化,才能被使用。

分析得到:可以知道类变量和实例变量都是有默认值的,但是局部变量没有默认值。

实例1:

public class Test{ public void setAge(){int age = 0;age = age + 7;System.out.println("小狗的年龄是: " + age);}public static void main(String[] args){Test test = new Test();test.setAge();}
}

以上实例编译运行结果如下:

`小狗的年龄是: ``7`

实例2:

在下面的例子中 age 变量没有初始化,所以在编译时会出错:

public class Test{ public void setAge(){int age;age = age + 7;System.out.println("小狗的年龄是 : " + age);}public static void main(String[] args){Test test = new Test();test.setAge();}}

以上实例编译运行结果如下:

Test.java:4:variable number might not have been initialized
age = age + 7;^
1 error

实例变量

  • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
  • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  • 实例变量可以声明在使用前或者使用后;
  • 访问修饰符可以修饰实例变量;
  • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

实例:

public class Employee{// 这个实例变量对子类可见public String name;// 私有变量,仅在该类可见private double salary;//在构造器中对name赋值public Employee (String empName){name = empName;}//设定salary的值public void setSalary(double empSal){salary = empSal;}  // 打印信息public void printEmp(){System.out.println("名字 : " + name );System.out.println("薪水 : " + salary);}public static void main(String[] args){Employee emp = new Employee("nowcoder");emp.setSalary(1000);emp.printEmp();}
}

以上实例编译运行结果如下:

名字 : nowcoder
薪水 : 1000.0

类变量(静态变量)

  • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
  • 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

实例:

package day1_code.ChangeValueDemo;public class InnerChangeValueDemo4 {public static void main(String[] args){//    salary = 10000;Employee em=new Employee();System.out.println(Employee.DEPARTMENT+"平均工资:"+em.getSalary());}}
class Employee {//本包中可以用//salary是静态的私有变量private static double salary=1000;//私有类常量也可以进行返回// DEPARTMENT是一个常量public static final String DEPARTMENT = "高中部";double getSalary(){return salary;}}

以上实例编译运行结果如下:

高中部平均工资:1000.0

注意:如果其他类想要访问该变量,可以这样访问:Employee.DEPARTMENT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794050.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

综述 | 杂种优势形成机制和预测方法及其在猪生产中的应用与展望

杂种优势是指不同品种或品系间的杂交代在生长、发育、繁殖和抗病抗逆等性状优于亲代的现象。杂交能有效提高后代的生长发育性能、繁殖性能和抗病性,因此被广泛应用于农业生产。然而,现有杂种优势理论只能解释部分杂种优势现象;并且由于杂种优势理论不完善,现有的杂种优势预…

全球7大家禽育种公司的前世今生

我国白羽肉鸡的祖代全部是从国外引进的品种,属于快大型肉鸡,其生长速度快、产肉量多,适合工业化生产,作为肉鸡屠宰加工企业的主要原料,白羽肉鸡是我国肉鸡产品主导品种,目前我国白羽肉鸡主要包括艾拔益加(AA+)、罗斯(Ross)308、科宝(Cobb)、海波罗(Hybro)和哈伯德…

中国农作物分布地图(2015-2021年)

中国是世界人口最多的国家,在全球谷物生产方面排名第一。通过多样化作物种类的多熟制种植,可以显著增加农作物产量,并减少相关的环境影响。全球约12%的农田实行多熟制,其中34%的水稻地采用多熟制系统。中国用仅占全球7%的耕地养活了世界20%的人口。中国约三分之一的农田种植…

华为智慧农业解决方案

物联网有望成为促进农业提产、实现供需平衡的关键使能技术。智慧农业采用了基于物联网的先进技术和解决方案,通过实时收集并分析现场数据及部署指挥机制的方式,达到提升运营效率、扩大收益、降低损耗的目的。可变速率、精准农业、智能灌溉、智能温室等多种基于物联网的应用将…

Nature Genetics | Rajeev K. Varshney综述:解锁植物遗传学的端粒到端粒(T2T)基因组组装

近期,Rajeev K. Varshney团队在Nature genetics发表综述文章:Unlocking plant genetics with telomere-to-telomere genome assemblies。摘要 连续基因组序列组装将帮助我们实现作物转化基因组学的全面潜力。最近在测序技术方面的进步,尤其是长读长测序策略,使得构建无间隙…

何为快速育种(Speed Breeding)?

所谓“Speed Breeding”(简称“SB”,额~),就是在环境可控的人工气候室中,通过改变光周期来加速植物的生长周期,从而起到加速育种的目的。 快速育种:加速作物研究和育种的强大工具 2017年7月9日,澳大利亚昆士兰大学Lee Hickey团队领衔在预印本网站bioRxiv上发表了“Spee…

八,SpringBoot Web 开发访问静态资源(附+详细源码剖析)

八,SpringBoot Web 开发访问静态资源(附+详细源码剖析) @目录八,SpringBoot Web 开发访问静态资源(附+详细源码剖析)1. 基本介绍2. 快速入门2.1 准备工作3. 改变静态资源访问前缀,定义为我们自己想要的4. 改变Spring Boot当中的默认的静态资源路径(实现自定义静态资源路径)5…

PNAS | 基因组预训练网络模型精准预测 DNA 突变

❝ 我们能教会计算机理解人类语言,同样也能让它们读懂DNA。2023年10月31日,加利福尼亚大学伯克利分校的科学家们在《美国科学院院刊》(PNAS)上发表了一篇突破性研究,提出了一种基于无监督DNA语言模型的新方法,该方法在全基因组范围内预测基因变异效果上,超越了现有的保守…

Git Extensions:一个.NET开源的 Git 图形用户界面(GUI)工具

前言 今天大姚给大家分享一个.NET开源、免费的用于管理 Git 存储库的独立图形用户界面(GUI)工具,它还与 Windows 资源管理器和 Microsoft Visual Studio (2015/2017/2019/2022) 集成:Git Extensions。Git新手指南:从基础到实践的全方位教程功能介绍图形用户界面:提供一个…

认识果树基因组的遗传改良与育种

果树基因组与遗传改良 2023年,南京农业大学吴俊教授团队发表在Plant Physiology的题为 “Genomic insights into domestication and genetic improvement of fruit crops”的长篇综述,系统总结了果树基因组学与遗传改良研究领域的最新进展,并展望了未来发展趋势。原文链接:…

关于mybatis

1、junit方法 @Test @Before @After 2、数据类型与别名 3、参数定义方法:#{name} 直接表示对象的属性名,只有一个参数的时候 #{} 内的名称随便写。%${name}% 模糊查询拼接字符串<select id="findByUsernameLike" parameterType="string" resultType…

【题解】CPS-S模拟2

目录PreT1.不相邻集合题目描述部分分40pts10pts正解思路代码T2.线段树题目描述部分分20pts正解思路代码T3.部分分40pts正解思路代码T4.部分分10pts正解思路代码And Pre赛时没有第一时间找到签到题,遂四处游走,后来决定先打T1,约1h时切了,然后1h打后3题暴力,后面推了推T4一…