标识符与命名规范

标识符

  • 什么是标识符

    • Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符
    • 凡是可以自己起名字的地方都叫标识符
  • 定义合法标识符的规则

    • 由26个英文字母大小写,0-9,_或者$组成
    • 数字不可以开头
    • 不可以单独使用关键字和保留字,但能包含关键字和保留字
    • Java中严格区分大小写,长度无限制
    • 标识符不能包含空格
  • 注意:在起名字时,为了提高阅读性,要尽量有意义(可以采用英文单词)

Java中的名称命名规范

  • 包名:多单词组成时,所有字母都小写:xxxyyyzzz
  • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
  • 常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ

变量的概念和定义

变量的概念

  • 变量是内存中的一个存储区域
  • 该区域有自己的名称(变量名)和类型(数据类型)
  • Java中每个变量必须先声明,后使用
  • 该区域的数据可以在同一类型范围内不断变化

定义变量的格式: 数据类型 变量名 = 初始化值 例如:int i = 2;

使用变量注意

  • 需要初始化值
  • 变量的作用域:一对{}之间有效
  • 变量是通过使用变量名来访问这块区域的

变量的分类-按数据类型

对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间

  • 基本数据类型

    • 数值型

      • 整数类型(byte,short,int,long)
      • 浮点类型(float,double)
    • 字符型(char)
    • 布尔型(boolean)
  • 引用数据类型

    • 类(class)→String字符串也在这里
    • 接口(interface)
    • 数组([])

除了8种基本数据类型之外,其他所有的数据类型都是引用数据类型

整数类型:byte、short、int、long

  • Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性
  • Java的整型常量默认为int型,声明long型常量必须在后面加“l”或者“L”(最好大写)
类型占用存储空间表数范围
byte1字节=8bit-128~127
short2字节-2的15次方~2的15次方
int4字节-2的31次方~2的31次方
long8字节-2的63次方~2的63次方

bit是什么单位? 0100110,这个就是7bit

浮点类型:float、double

  • Java浮点类型也有固定的表数范围和字段长度,不受具体OS的影响
  • Java的浮点型常量默认为double型,声明float型常量必须在后面加“f”或者“F”
  • 浮点型常量的两种表示形式

    • 十进制数形式:5.12 512.0F .512(必须有小数点)
    • 科学计数法形式:5.12e 512E2 100e-2
类型占用存储空间表数范围精度
单精度float4字节正负2的128次方7位有效数字
双精度double8字节正负2的1024次方16位有效数字

字符类型:char

  • char型数据用来表示通常意义上的“字符”(2字节)
  • 字符型常量的表现形式

    • 字符常量是用单引号(’ ‘)括起来的单个字符,涵盖世界上所有的书面语中的字符。例如:char c1 = 'a'; char c2 ='中'; char c3 = '9';
    • Java中还允许是用转义字符 ‘ ’来将其后的字符转变成为特殊的字符型常量。例如char c3 = 'n',表示换行符
  • char类型是可以进行运算的。因为它有对应的Unicode码。

布尔类型:boolean

  • boolean类型适用于逻辑运算,一般用于程序流程控制:

    • if条件控制语句;
    • while循环控制语句;
    • do-while循环控制语句;
    • for循环控制语句;
  • boolean类型数据只允许取值true和false,无null

*不可以用0或者非0的整数替代false和true,这一点和C语言不同

引用数据类型:String类

  • 值null可以赋值给任何引用数据类型(类、接口、数组)的变量,用以表示这个引用类型中保存的地址为空。也就是说,引用类型都可以用null作为值,可以在初始化的时候赋值为null
  • String类属于引用类型,意味着可以使用null作为值
  • String类是一个典型的不可变类,String对象创建出来就不可能被改变。创建出的字符串存放在数据区,保证每个字符串常量只有一个,不会产生多个副本。

    int i0 = 1;
    int i1 = 1;
    //以上情况会在内存中存储两个1的值
    
    String s0 = "hello";
    String s1 = "hello";
    //而这种情况,不会在内存中存在两个“hello”,只存在一个“hello”
    
    /*
    假设“hello”的内存地址是xxxxx,当声明s0变量时,给s0赋值“hello”,实际上是让s0变量引用“hello”的内存地址xxxxx;当我们再声明变量s1,也赋值“hello”的时候,实际上是直接把已经存在的“hello”的内存地址给s1引用
    */

基本数据类型转换

  • 自动类型转换:容量小的类型自动转换为容量大的数据类型。
  • 有多种数据类型混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。数字类型从小到大分别是:byte、short、int、long,float、double。
  • byte、short、char之间不会相互转换,他们三者在进行计算时首先转换为int类型。
  • 当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转换为字符串类型。

注意:当有一系列的+的运算的时候,如果某个部分其中含有字符串,那么这个字符串前边挨着的+号开始一直往后,都是要按照字符串拼接去看。例如:

public class Test{
    public static void main(String[] args){
        String str = 3 + 'a' + 5 + "b" + 2 + 6;
        System.out.println(str);//输出结果是:105b26
    }
}

强制类型转换

  • 自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,要格外注意。

    byte b = 9;
    int i = b;
    //以上这两行属于正常隐式转换数据类型,是自动的
    
    int k = 7;
    byte b0 = (byte)k;
    //这是强制转换数据类型,转换的数据类型要用英文小括号括起来
  • 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类,则可以实现把字符串转换成基本类型。例如:

    String a = "43";
    int i = Integer.parselnt(a);
  • boolean类型不可以转换为其他的数据类型。
Last modification:December 23rd, 2019 at 10:26 pm
If you think my article is useful to you, please feel free to appreciate