Java基础语法(一. 关键字与标识符,常量和变量)

语法基础(一)

一. 关键字和标识符

1. 关键字

      概念:   Java关键字是事先定义好的对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数

2. 标识符

      概念:  程序中自己命名的都叫标识符。    比如: 类名,变量名,常量名,方法名。

      命名规则:

  • 不可以使用Java保留的关键字。
  • 数字,字母,下划线(_)组成,严格区分大小写,也可以使用$。
  • 不能数字开头

      建议:
        1. 包名小写,类名大驼峰式 。
        2. 变量名方法名首字母小写,其它单词首字母大写。
        3. 常量(final修饰过的)使用全大写。



二. 常量和变量

首先了解Java中8大基本数据类型

类型字节数二进制位数默认值(作为成员变量)
boolean(布尔型)理论上是(1/8)  理论上是1false
byte(字节型)            1       80
short(短整型),char(字符型)            2      16short是0
char是 ‘u0000’
int(整型),float(单精度浮点数)            4      32int是0
float是0.0
long(长整型),double(双精度浮点数)            8      64long是0
double是0.0


1. 常量

概念: 程序运行中不会发生变化的量。

根据概念可以有:

  • 整型常量
  • 浮点数常量
  • 字符常量
  • 字符串常量
  • 布尔常量

2. 变量

概念:  程序运行期间,内容可以随意改变的量。

  • 当创建变量的时候,需要在内存中申请空间。(前提需要知道数据类型,变量名,初始值)
  • 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
  • 通过定义不同类型的变量,可以在内存中存储整数,小数或字符。

创建变量格式:
             数据类型 变量名 = 值;
或者
             数据类型 变量名;
             变量名 = 值;

作用域: 从变量定义开始,到所属大括号结束。
生命周期:
                      1. static修饰的变量,生命周期取决于类何时被加载及卸载
                      2. 成员变量,生命周期取决于对象何时被创建及销毁
                      3. 成员方法中局部变量,生命周期取决于该方法何时被调用与结束

注意: 当成员变量和成员方法中的变量同名,而且使用的时候没用this,那么方法内的变量名就只表示局部变量。


变量和常量的注意事项:

  • 数据范围与字节数不一定相关,float数据范围比long更广泛,但float只有4个字节,long有8个字节。
  • 浮点数知识一个近似值,并不是精确的值。
  • 浮点数默认类型是double,若使用float类型,需要末尾加上"F"。
  • 字符串不属于基本类型,而是引用类型。
  • 整型默认类型是int,浮点数默认类型是double
    (也可以理解为,所有长度低于int的类型(byte、short、char)在运算之后结果将会被提升为int型。double同理。)

public class A{

    public byte num1=1;

    public void a(){
          //创建byte类型
            byte num2=2;
            
         // byte num3=num1+num2     该行会报错,类型不匹配: 不能从int类型转换为byte类型
            int  num4=num1+num2;    // 不会报错

            //创建long类型
            //long num5=99999999999;   该行会报错,数字太大

            long num6=99999999999L; //不会报错,末尾加L,说明该整数是long类型的
    }

}

分析原因:
一. (对于byte)
      ① 1是常量,整型默认为int类型 0000 0000 0000 0001,2为 0000 0000 0000 0010
      ② 两个数都没有超出 byte规定范围,存入byte时会去掉多余字节
      ③ 但是num1和num2是变量,变量的值可以随时更改,若外部修改num1的值使其为127,num1+num2 结果为 129 整型默认int类型则 0000 0000 1000 0001,超出byte表示范围,此时若强行赋值给byte类型就会发生精度损失,安全起见所以进行报错。
     (也可以理解为,所有长度低于int的类型(byte、short、char)在运算之后结果将会被提升为int型)


二.(对于long)
      1. 99999999999是常量,整型默认为int 1011101001000011101101110011111111111,长度超出int能表示的范围所以发生错误。
      2. 99999999999L是常量,由于后缀"L"声明为Long类型的,符合长度范围,不报错。




三. 数据类型转换(对于基本数据类型)

类型转换分为两种:  自动(隐式)数据类型转换,强制(显式)数据类型转换。

1. 自动类型转换
概念:
 当参与运算的数据类型不同时,则会自动转换成同一类型,然后进行运算。
特点: 不需要进行处理,自动完成数据类型转换。
转换规则:  若运算类型不同,自动从低级转换向高级类型转换,数据范围从小到大。
                   低 ------------------------------------> 高
          byte,short,char—> int —> long—> float —> double

2. 强制类型转换:
概念: 当操作数的类型不同,需要将结果或者操作数转化为所需要的类型,这个过程即为强制类型转换。
特点: 需要手动进行处理,强制转换为需要的类型。
转换规则:  从高级转换向低级类型转换,数据范围从大到小。
转换格式: 范围小的类型变量 = (范围小的类型) 范围大的数据。

关于类型转换需要注意的地方:

  • 不能对boolean类型进行类型转换。
  • 转换过程中可能导致溢出或损失精度(尤其是强制转换)。



 public static void main(String[] args) {
        //自动类型转换
        byte num1=10;
        int num2=num1;  //自动转换为int类型

        int num3=20;

        //一个byte类型,一个int类型,运算类型不同,自动提升到int类型,进行相加,结果为int类型
        int num4=num1+num3;

        float num5=num3+num1; //自动转换为float类型

        //一个int类型,一个float类型,运算类型不同,自动提升到float类型,进行相加,结果为float类型
        float num6=num5+num3;

        //int num7 = num5+num3; 报错,无法自动向低精度转换,会发生精度丢失,所以报错。

        //强制类型转换
        int num7=(int) num5 +num3;  //结果为: 50
        //手动进行的强制转换

    }

参考资料:
https://www.cnblogs.com/xiaozhongfeixiang/p/11502971.html
( 注:部分资料参考网络,如有侵权或错误请留言,感谢!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值