Java的常量与变量是什么?怎么学习呀?

2020-12-02 13:26发布

8条回答
summer
2楼 · 2020-12-02 18:25

常量是公共的、静 态的、不可改变的 ,必须初始值(一旦赋值, 不可改变)

例如 :public static final String str = "我终身不可变";

变量是可变的,值不固定的,可分为成员变量、全局变量。

成员变量的方位就是在方法内部,如下代码:

public void add(int i){

System.out.println(i);//i的值是局部的,范围是{开始}结束。

}

全局变量是定义在类内部,方法外部,例如:

public class Person{

private String name; //默认为null

name = "张三"; //改变name的值

}


听雨
3楼 · 2020-12-03 09:55

首先从量这个公共词来理解, 量就是一块用来存放数据的内存空间; 常量就是该内存空间中的数据从第一次存储数据后到内存空间销毁数据都不会发生改变,而变量对应的内存空间中的数据是可以随时发生改变的。


而对应内存空间是不好直接访问的, 所以我们会给他另外取一个名字,, 这个名字就是对应的变量名和常量名。。。。。。。。

小小李兆佳
4楼 · 2020-12-03 09:55

变量是利用声明的方式,将内存中的某个内存块保留下来以供程序使用,其内的值是可变的。可声明的变量数据类型有整型(int)、字符型(char)、浮点型(float或double),也可以是其他的数据类型(如自定义的数据类型——类)。在英语中,数据类型的“type”和类的“class”本身就是一组同义词,所以二者在地位上是对等的。

1.声明变量

声明变量有两个作用。

(1)指定在内存中分配空间大小。

变量在声明时,可以同时给予初始化(即赋予初始值)。

(2)规定这个变量所能接受的运算。

例如:整数数据类型int只能接受加、减、乘、除(+,-,*,/)等运算符。

其实在本质上,“类”就是在诸如整型、浮点型等基本数据“不够用”时,用户自定义的一种数据类型(User—Difined Type,UDT)。正是有了类型的区分,各个不同类型的变量就可以根据其类型所规定的操作范围“各司其职”。

因此,任何一个变量在声明时必须给予它一个类型,而在相同的作用范围内,变量还必须有个独一无二的名称。

注意:变量的值永远以最后更新的值为准。

扩展:声明一个变量时,编译程序会在内存里开辟一块足以容纳此变量的内存空间给它。不管该变量的值如何改变,都永远使用相同的内存空间。常量是不同于变量的一种类型,它的值是固定的,通常给变量赋值时,会将常量赋值给变量。

2.变量的命名规则

变量也是一种标识符,所以它也遵循标识符的命名规则。规则如下:

命名规则
(1)变量名可由任意顺序的大小写字母、数字、下划线( _ )和美元符号( $ )等组成。
(2)变量名不能以数字开头。
(3)变量名不能是Java中的保留关键字。

3.变量的作用范围

变量是有作用范围(Scope)的,作用范围有时也称作用域。一旦超出变量的作用范围,就无法再使用这个变量。

按作用范围进行划分,变量分为成员变量和局部变量。

(1)成员变量(加粗字体为定义的成员变量)

在类体重定义的变量为成员变量。它的作用范围为整个类,也就是说在这个类中都可以访问到定义的这个成员变量。

行号代码
01//定义类中的成员变量
02public class Test
03{
04    static int num = 1;    //定义一个成员变量
05    public  staitc  void  main(String[] args)
06    {
07        System.out.println("成员变量num的值是:" + num);
08    }
09}

 

(2)局部变量(加粗字体为定义的局部变量)

在一个函数(或称方法)或函数内代码块(code block)中定义的变量称为局部变量,局部变量在函数或代码块被执行时创建,在函数或代码块结束时被销毁。局部变量在进行取值操作前必须被初始化或赋值操作,否则会出现编译错误。

Java存在块级作用域,在程序中任意大括号包装的代码块中定义的变量,它的生命仅仅存在于程序运行改代码块时。当跳出方法体(method body)之外,该变量就不能被使用了。

行号代码
01//定义类中的局部变量
02public class Test
03{
04    //局部变量声明在方法体内!
05    public  staitc  void  main(String[] args)
06    {
07       for(int i = 0; i<=10; i++)
08       {
09          int num = 0;
10          num = num + i;
11          System.out.println("i = " + i + ",sum = " + sum);
12       }
13    }
14}

 

块(block)作用范围除了用for(while)循环或方法体的左右花括号{ }来界定外,还可以直接用花括号{ }来定义“块”,也就是说,出了这个“块”,它的生命周期就终结了。

一般来说,所有变量都遵循“先声明,后使用”的原则。这是因为变量只有“先声明”,它才能在内存中“存在”,之后才能被其他方法所“感知”并使用,但是存在于类中成员变量(不再任何方法内),它们的作用范围是整个类范围(class level),在编译器的“内部协调”下,变量只要作为类中的数据成员被声明了,就可以在类内部的任何地方使用,无需满足“先声明,后使用”的原则。


三岁奶猫
5楼 · 2020-12-03 10:48

常量是公共的、静 态的、不可改变的 ,必须初始值(一旦赋值, 不可改变)

例如 :public static final String str = "我终身不可变";

变量是可变的,值不固定的,可分为成员变量、全局变量。

成员变量的方位就是在方法内部,如下代码:

public void add(int i){

System.out.println(i);//i的值是局部的,范围是{开始}结束。

}

全局变量是定义在类内部,方法外部,例如:

public class Person{

private String name; //默认为null

name = "张三"; //改变name的值

}


小小收藏家
6楼 · 2020-12-03 16:08

常量:在程序运行期间,固定不变的量。

常量的分类:
1.字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:“abc”、“Hello”、“123”。
2.整数常量:直接写上数字,没有小数点。例如:100,200,0,-250。
3.浮点数常量:直接写上的数字,有小数点。例如:2.5、-3.14、0.0。
4.字符常量:凡是用单引号引起来的单个字符,就是字符常量。例如:‘A’、‘b’、‘9’、‘中’。
5.布尔常量:只有两种取值。true、false。
6.空常量:null。代表没有任何数据。

注意:
1.两个单引号中间必须有且仅有一个字符,没有不行。
2.两个单引号中间必须有且仅有一个字符,有两个不行。
3.空常量不能直接用来打印输出。

例如:System.out.println(’’);这是错误的。
例如:Syetem.out.println(‘AB’);这是错误的。
例如:System.out.println(nulll);这是错误的。

数据类型

数据类型分为基本数据类型和引用数据类型。

基本数据类型:四类八种。
    整数型    byte short int long
    浮点型    float double
    字符型    char
    布尔型    boolean

简要提一下引用数据类型:字符串、数组、类、接口、Lambda。

如下图所示。

在这里插入图片描述

取值范围与内存占用不相关,就比如说图中的long占用8个字节而单精度浮点数float只占用四个字节,但是float的取值范围却比long的取值范围大很多,这是因为float采用的是科学计数法计算省空间。

注意事项:
1.字符串不是基本类型,而是引用类型。
2.浮点型可能只是一个近似值,并非精确值。
3.数据范围与字节数不一定相关。例如:float数据范围比long更加广泛,但是float是4字节,long是8字节。
4.浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。
如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。大小写后缀都可以,推荐使用大写字母后缀。
例如:System.out.println(100L);

变量

变量:程序运行期间,内容可以发生改变的量。

创建一个变量并且使用的格式:数据类型 变量名称; 变量名称 = 数据值;

一步到位的格式:数据类型 变量名称 = 数据值;//在创建一个变量的同时,立刻放入指定的数据值。

用long 和 float时要加后缀。例如:long num = 30000000000L; float num = 2.5F;

数据类型转换

当数据类型不一样时,将会发生数据类型转换。

数据类型转换分为两类:

  自动类型转换(隐式)
    1.特点:代码不需要进行特殊处理,自动完成。
    2.规则:数据范围从小到大。

  强制类型转换(显式)
    1.特点:代码需要进行特殊的格式处理,不能自动完成。
    2.格式:范围小的数据类型 范围小的变量名 = (范围小的类型)原本范围大的数据; 例如:int num = (int) 100L;


彭彭彭
7楼 · 2020-12-04 09:03

常量是公共的、静态的、不可改变的,必须初始值(一旦赋值,不可改变)

例如:public static final String str = "我终身不可变";

变量是可变的,值不固定的,可分为成员变量、全局变量。

成员变量的方位就是在方法内部,如下代码:

public void add(int i){

System.out.println(i);//i的值是局部的,范围是{开始}结束。

}

全局变量是定义在类内部,方法外部,例如:

public class Person{

private String name; //默认为null

name = "张三"; //改变name的值

}


魏魏姐
8楼 · 2020-12-04 11:16

String str = “Hello world”;String str = new String("Hello world");主要可以通过以上两种方法定义字符串变量。在Java中,字符串不可单调的称之为变量,而是对象,每当创建了一个字符串对象后,它都会有自己的方法和属性,也就是对象的成员。在Java中,一定要深入去理解面向对象的思想,时刻谨记“一切皆是对象”。

相关问题推荐

  • 回答 156

    对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去...

  • 回答 93

    2个都很好就业,更关键的是要学得到东西

  • 回答 12
    已采纳

    获取Map集合中所有的key可以通过map集合的keySet()方法获取例如:    Map map = new HashMap();    map.put(xx,xx); //存放数据    //.... 省略    Set set = map.keySet();    //可以通过迭代器进行测试    Iterator iter = set.iter...

  • 回答 56
    已采纳

    不同年龄,不同掌握程度,学历,找工作城市,面试能力这是一个多方面影响的结果,如果是平均值的话,全国平均薪资14k左右

  • 回答 38

    具体学多久,根据自己的学习力,自律性、解决问题能力来决定若系统性学习,跟着讲师的节奏走,大概半年左右,有专业的讲师把课程进行规划,尽心系统学习,有问题,讲师会帮忙解决,学习的效率很高,避免了自学中出现各种问题解决不了,而耽误很多时间,可能会...

  • 回答 23
    已采纳

    (1)idea启动时会有两个快捷方式,安装完后默认生成在桌面的是32位的idea的快捷方式,如果我们使用这个快捷方式运行大项目,一般都会很卡。解决方法是找到idea的安装目录,然后进入bin文件夹,找到名称为idea64的应用程序,右键他生成桌面快捷方式。以后每次...

  • BIO与NIO、AIO的区别2020-05-19 15:59
    回答 4
    已采纳

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要...

  • Java方法的命名规则2021-04-06 19:07
    回答 31

    ava是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成,例如com、xuetang9、compan...

  • 回答 2

    public class Point {    private int x;    private int y;    public int getX() {        return x;    }    public void setX(int x) {        this.x = x;    }    public int getY() {        return y;    } ...

  • 回答 6

    经典版单例模式public class Singleton {        private static Singleton uniqueInstance;//利用一个静态常量来记录singleton类的唯一实例。     private Singleton() {     }     public static  Singleton getInstance()...

  • 回答 3

    哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发...

  • 回答 14

    1. DOM(Document Object Model)        DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才...

  • 回答 19

    1)作用不同: throw用于程序员自行产生并抛出异常; throws用于声明在该方法内抛出了异常2) 使用的位置不同: throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表的后面,不能单独使用。3)内容不同: throw抛出一个异常对象,且只能是...

  • 回答 11

    基本执行过程如下:1)程序首先执行可能发生异常的try语句块。2)如果try语句没有出现异常则执行完后跳至finally语句块执行;3)如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。4)catch语句块可以有多个,分别捕获不同类型...

  • 回答 20

    100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证...

  • 回答 16

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译...

没有解决我的问题,去提问