变量与常量

标识符

标识符的命名规则:

1)标识符可以由字母数字下划线(_)美元符($)组成,不能以数字开头;

2)标识符严格区分大小写

3)标识符不能是Java关键字保留字

4)标识符的命名最好能反映出其作用。

例如合法的标识符:

       Hello ,  hello_test ,  _hello ,  Void  ,   abc$123  

非法的标识符:

      class ,  123abc ,   abc 123  ,  void

 

关键字

标识符不能为关键字和保留字,那我们来认识一下哪些是Java中的关键字:

java不通过变量名 java不合法的变量名_java不通过变量名

编程语言学习经验谈

像学习英语、日语等语言一样,接受语言的语法。

变量

什么是变量

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

我们可以通过一间酒店的房间作为例子来类比说明:

房间

变量

入住的客人(张三、李四) 

变量值(1、Lisi)

房间名字 (101、203)

变量名(name、age、sex)

房间类型(单人间、标准间、商务间)

变量类型(int、float、char)

变量名的命名规则:

1)满足标识符命名规则;

2)符合驼峰法命名规范。

示例:

        年龄   age

               学生姓名   stuName

要求:

1)简单,做到见名知意;

2)变量名的长度没有限制。

 

类的命名规则:

满足Pascal命名法。

示例:

                HelloWorld

 

数据类型

java不通过变量名 java不合法的变量名_System_02

 

java不通过变量名 java不合法的变量名_字面值_03

基本数据类型变量的存储

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

           引用数据类型包括数组和类等。

                  类定义的变量又叫对象。

    变量按照作用范围可以分为:

                  -类级、对象实例级、方法级、块级。

java不通过变量名 java不合法的变量名_java不通过变量名_04

整型字面值

    Java中有三种表示整数的方法:十进制、八进制、十六进制。

    如:123(十进制),023(八进制), 0x1357(十六进制),  0X3c(十六进制),  0x1abcL(表示长整型的十六进制数)。

 

    进制表示

    八进制:以0开头,包括0~7的数字。

           如:037  ,  056

    十六进制表示:以0x或0X开头,包括0~9的数字,及字母a~f,A~F;a/A表示数字10,以此类推。

           如:0x12,0xabcf   ,   0XABCFF

 

    变量声明

    格式:   数据类型  变量名

    例:

int n;      //声明整型变量n

    long count;   //声明长整型变量count

    赋值

    在Java中使用   "="   运算符进行赋值。

    "="  叫作赋值运算符,将运算符右边的值赋给左边的变量。

    例:

int n;   //定义int型变量n

n = 3;   // 将3赋值给n

    我们也可以在定义变量的同时给变量赋值,即变量的初始化。

    例:

int n = 3;    //定义int类型变量存放十进制数据

int octal = 037;  //定义int类型变量存放八进制数据

long longNum = 0xa2cdf3ffL;     //定义long类型变量存放十六进制长整型数据

short shortNum = 123;   //定义变量存放短整型数据

byte b = 10;    //定义变量存放byte类型数据

浮点型字面值

        浮点型字面值默认情况下表示double类型,也可以在值后加d或D。

        如:123.43d或123.43D

               若表示float类型,则需要在字面值后加f或F。

               如:23.4f或23.4F

public class FloatDemo {

    public static void main(String[] args) {

        //定义一个单精度浮点型变量,存放1234.328

        float f = 1234.328f;

        System.out.println("f="+f);





        //定义一个双精度浮点型变量,存放5623.465

        double d = 5623.465;

        System.out.println("d="+d);





        //double类型变量表示的数据范围是最大的

        double d1 = 123L;

        System.out.println("d1="+d1);





        //变量间的赋值

        double d2 = d;

        System.out.println("d2="+d2);

    }

}

字符型字面值

 

    字符型字面值用单引号内的单个字符表示。

            如:  'a'           'b'          '$'         单引号中必须只有一个字符。

定义字符型变量

char a = 'a';

    char ch = 65;
public class CharDemo {

    public static void main(String[] args) {

        //定义一个变量存放字符'a'

        char a = 'a';

        System.out.println("a="+a);

        char ch = 65;

        System.out.println("ch="+ch);

        //char表示的数据范围是0~65535

        char ch1 = 65535;

        System.out.println("ch1="+ch1);

        //字面值超出表示数据范围,需要进行强制类型转换

        char ch2 = (char)65536;

        System.out.println("ch2="+ch2);

    }

}

知识点补充

ASCII码

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)。

它是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

 

ASCII码表示

使用7位或8位二进制数组合来表示128或256种可能的字符。

-7位二进制数组合——标准ASCII码,用于表示大小写字母、标点符号、美式英语中的控制字符等。

-8位二进制数组合(后128位)——扩展ASCII码,用于表示特殊符号,外来语言的字母等。

 

Unicode编码

Unicode编码的目标是支持世界上所有的字符集

char c = '\u005d';

Unicode表示法,在值前加前缀\u

布尔类型字面值

    布尔值只能定义为true和false。

    例:

boolean b = true;
boolean flag = false;

 

字符串字面值

    字符串不属于基本数据类型,它是类!

    双引号引起来的0个或多个字符。

    例:

String s = "";

    

public class StringDemo {

    public static void main(String[] args) {

        //定义一个空字符串

        String s1 = "";

        System.out.println("s1="+s1);

        //定义一个字符串,内容时Hello

        String s2 = "Hello";

        System.out.println("s2="+s2);

        //定义一个包含unicode字符的字符串

        String s3 = "A\u005d\u005fBCD";

        System.out.println("s3="+s3);

        //定义一个包含空格的字符串,空格也会占字符

        String s4 = "Hello    World";

        System.out.println("s4="+s4);

    }

}

 

 

转义字符

字母前面加上捺斜线"\"来表示那些常见的不能显示的ASCII字符。我们把这些字符称为转义字符,如\t,\n等,因为后面的字符,都不是它本来的ASCII字符意思了。

java不通过变量名 java不合法的变量名_字面值_05

 

 

综合案例

public class VarDemo {

    public static void main(String[] args) {

        //定义两个整型变量x,y

        //第一种方式,声明变量的同时赋值——变量的初始化

        //int x = 3,y = 5;

        //先声明变量,再赋值

        int x,y;

        x=3;

        y=5;

        System.out.println("x="+x);

        System.out.println("y="+y);

        //关于换行的问题

        //函数换行

        System.out.println();

        //转义字符换行

        System.out.println(x+y+'\n');

        //关于转义字符

        System.out.println(x+'\t'+y+'\n');     //输出为   27    原因 字符本身就是一个整型,此处相当于把字符转换成整数,然后求和输出了

        //解决方法

        //第一种,最左侧加上  ""  ,变成字符串的连接

        System.out.println(""+x+'\t'+y+'\n');

        //第二种,把单引号改为双引号

        System.out.println(x+"\t"+y+'\n');    //输出为    3   5

        System.out.println("\n\'"+x+"\'");   // 输出  '3'

        //定义一个汉字的字符

        char ch = '爱';

        System.out.println(ch);

        char 中文 = '中';     //不建议中文作为变量名

        System.out.println(中文);

        //用科学计数法表示浮点型数据

        double d = 1.23E5;

        float f = 1.23e5f;

        double d1 = .2;

        System.out.println("d="+d);

        System.out.println("f="+f);

        System.out.println("d1="+d1);

    }

}

 

类型转换

    类型转换分为自动类型转换和强制类型转换。

    

自动类型转换顺序(又叫隐式类型转换)

我们可以通过下图,总结出自动类型转换的规律:低级类型到高级类型的自动类型提升。

java不通过变量名 java不合法的变量名_java不通过变量名_06

 

 

强制类型转换

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

如:

double d = 123.4;

float f = (float)d;

强制数据类型转换的格式:(数据类型)数值  

public class TypeExchange {

    public static void main(String[] args) {

        //char类型和int类型之间的转换

        char c = (char)65536;

        int n;

        n = c;    //隐式类型转换

        c = (char)n;   //强制类型转换


        //整型和浮点型的类型转换问题

        int x = 100;

        long y = x;

        x = (int)y;


        float f = 1000000000000L;

        System.out.println("f="+f);    //  f=1.0E12


        //long 类型  转换成  float/double  会出现丢失精度问题

        float f1 = 142152563462345231L;

        System.out.println("f1="+f1);    //  f1=1.4215256E17

    }

}

    

常量

    常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

    格式:final int n = 5;

public class FinalDemo {

    public static void main(String[] args) {

        int m = 5;

        final int N = 5;

        m = 10;

        // N  = 11;   编译器报错,不允许修改

        final double PI = 3.14;

        final double MIN_VALUE = 0;

    }

}