Java常量与变量

1.标识符

在Java中,变量、常量、函数、类都可以称为程序实体,而他们的名称统称为标识符。

(1)标识符的命名规则

标识符可以由字母、数字、下划线(_)和$组成,不能以数字开头。
标识符严格区分大小写。
标识符不能是Java关键字和保留字。
标识符的命名最好能反映出其作用。

需要说明的是,以下划线(_)开头是合法的,但是在Go语言中不合法。
python语法中也是合法的,只不过表示私有变量。

 

2.关键字

关键字是被编程语言保留的字符序列,编程人员不能将其当作标识符,因此关键字也被称为保留字。
java中的关键字:

  Java总共有50多个关键字,还有几个保留字,比如goto。

 

3.变量

在数学概念中,变量表示没有固定值且可以改变的数。
从计算机系统的角度来看,变量是一段或多段用来存储数据的内存。

变量的三个元素:变量类型、变量名和变量值。

变量的命名规则:
  满足标识符的命名规则。
  符合驼峰法命名规范。(变量都以小写字母命令,如果由多个单词组成,除首单词外其余单词第一个字母大写)
  变量名的长度没有限制。

变量命名方式:
(1)先定义类型,再进行赋值
  v_type v_name
  v_name = value

(2)直接定义变量
  v_type v_name = value

 

4.数据类型

(1)基本数据类型

不同数据类型,占据的内存大小:

不同数据类型的取值方位:
  • byte:-128 ~ 127
  • short: -32768 ~ 32767
  • int: -2147483648 ~ 2147483647
  • long: -9223372036854775808 ~ 9223372036854775807

 

(2)字面值

a.整型字面值

关于进制转化:https://www.cnblogs.com/yangmingxianshen/p/7720475.html
Java中有三种表示整数的方法:十进制、八进制、十六进制
二进制:用0和1来表示数,基数是2,进位规则是逢二进一,借位规则是借一当二。
八进制:用0-7来表示数,逢八进一。以0开头
十进制:用0-9来表示数,逢十进一。
十六进制:用0-9以及ABCDEF来表示数,逢十六进一。以0x或0X开头,ABCDEF可以使用小写表示。

示例:
123:十进制
023:八进制
0x1357:十六进制
0X3c:十六进制

变量定义示例:
int octal = 037 定义int类型变量,存放八进制数据
long longNumber = 0xa2cdf3ffL 定义long类型变量,存放十六进制数据
short shortNumber = 123 定义short类型数据,存放十进制数据
byte b = 10 定义int类型数据,存放2进制数据

需要注意的是:
在常规逻辑中,我们一直以为类似int、long这类数据,只能存储整数类型,其实是可以存储八进制、十进制、十六进制的数值的。

b.浮点型字面值

浮点型字面值默认情况下表示double类型,也可以在值后加d或D。
例如:123.43d或123.43D
如要表示float类型,则需要在字面值后加f或F

需要注意的是:
float f = 1234.23; //这样会报错。浮点型默认是double类型

将double数据类型的值转化为float,可能导致值得丢失。

c.字符型字面值

字符型字面值用单引号内的单个字符表示。如'a','b','$'
需要注意的是:
字符型字面值用单引号引起来。
单引号中必须只有一个字符。

如何定义字符型变量?
char a = ‘a’;

下面这个简单示例:
public class Char {
public static void main(String[] main) {
char a = 'a'; //a=a
System.out.println("a="+a);
char b = 65;
System.out.println("b="+b); // b=A
  }
}

char类型使用两个字节表示,也就是范围是0-65535。
如果字面值超出char类型所表示的数据范围,需要进行强制类型转换。

为什么b不是打印65,而是打印A?在ASCII中,65对应A。

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)。
基于拉丁字母的一套编码系统。
主要用于显示现代英语和其他西欧语言。

Unicode(万国码):相对于ASCII来说,可以表示所有字符。
例如:
char c = ‘\u005d’
Unicode表示法,在值前加前缀\u

char c = '\u005d';
System.out.println("c="+c); //c=]

单引号表示字符型的字面值。
字符型字面值有什么意义所在吗?

d.布尔类型字面值

布尔值只定义为true和false。
示例:
boolean b = true;

e.字符串字面值
字符串并不是基础数据类型,但是与字符型字面值有些类似。
双引号引起来的0个或多个字符。
String a = “ ” //代表可以为空。


(3)基本数据类型变量的存储
a.按照类型来分类
数据类型分为基本数据类型和引用数据类型。
引用数据类型包括数组和类等。
类定义的变量又叫做对象。

b.按照作用范围分为
类级
对象实例级别
方法级(局部变量)
块级

 

  在内存中,变量又可以分为栈、堆、常量池。

  局部变量存储在栈当中。



5.类型转换

类型转换分为自动类型转换和强制类型转换。
自动类型转换又叫做隐式类型转换。

  上方箭头反方向的都属于强制类型转换。


如果A类型的数据范围比B类型大,则将A类型的值赋值给B类型,需要强制类型转换。

强制转换示例:
public class TypeExchange {
  public static void main(String[] args) {
  //char类型和int类型之间的转换
    char c=(char)65535;
    int n;
    n=c; //隐式类型转换
    System.out.println(n);
    c=(char)n;

    //整型和浮点型的类型转换问题
    int x = 100;
    long y=x;
    x=(int)y;
    float f=1000000000000L;
    System.out.println("f="+f); //f=1.0E12
  }
}


6.常量
常量只是在变量前面加上final关键字。
常量一旦定义之后就无法修改。
final int n = 5;

 

7.var关键字
有时候可能类型的名字太长,写起来比较麻烦。可以使用var关键字来省略。例如
StringBuilder sb = new StringBuilder();
可以简写为:
var sb = new StringBuilder();
因为sb是StringBuilder的实例化对象,编译器可以自动推断出变量sb的类型。

在Go语言中定义变量使用关键字var,定义方式也是多种多样。定义常量使用关键字const。
python由于是动态类型的语言,不论是常量还是变量,都会在执行的时候自动识别。

posted @ 2020-03-15 06:07  明王不动心  阅读(506)  评论(0编辑  收藏  举报