Java基本语法之变量和运算符

一、关键字和保留字

  • 关键字: 被Java语言赋予了特殊含义,用做专门用途的字符串
    1. 特点:关键字中所有字母都为小写
    2. 例: class; interface; if; native 等
  • 保留字:现有Java版本1.8尚未使用,但以后版本可能会作为关键字使用。(自己命名标识符时要避免使用这些保留字)
    1. 如goto; const;

二、标识符(Identifier)

  • 标识符:Java对各种变量、方法和类等要素命名时使用的字符序列成为标识符
    • 注:凡是自己可以起名字的地方都叫标识符,如类名,变量名,方法名,包名
      • 合法标识符的定义规则
        • 可由26大小写字母,0-9,_或$组成
        • 数字不可开头
        • 不能使用关键字和保留字,但可以包含关键字和保留字
        • 区分大小写,长度无限制
        • 不能包含空格
      • 标识符命名规范
        • 包名:多单词组成时所有字母均小写xxxyyyzzz
        • 类名、接口名:多单词组成时,所有单词首字母大写(大驼峰命名法?):XxxYyyZzz
        • 变量名、方法名:第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
        • 常量名:所有字母都大写。多单词时每个单词用下划线链接:XXX_YYY_ZZZ
      • 规则不对编译不通过,规范不对编译无问题
    • 注1:
      • 为提高阅读性,起名字最好“见名知意”
      • java采用unicode字符集,因此标识符也可以使用汉字声明,但脑子正常就别用

三、变量

  • 概念:内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
    • 变量时程序中最基本的存储单元。包含变量类型、变量名和存储的值
  • 作用:用于在内存中保存数据
  • 定义变量的格式: 数据类型 变量名 = 变量值;
    • int myAge = 12;
    • 或者:

int myAge;

myAge = 12;

  • 使用变量的注意事项:
    • 变量必须先声明,后使用
    • 使用变量名来访问变量中的数据
    • 变量都定义在其作用域内,出了作用域变量就失效了。
      • 同一作用域内,不可声明两个相同名字的变量,会报错
  • Java中变量的类型:
    • 按数据类型分类
    • 按声明位置分类

变量类型详解

基本数据类型

  • 整型
    • byte为存储数据最小的单位,1字节 = 8bit。 因此共有2的8次方,共256种组合,因此表数范围为-128~127,小心别超了
    • short为2字节存储空间,为-215~215-1
    • int为4字节,以此类推
    • long为8字节,以此类推
      • 注意:定义long型时,必须在变量值后以大L或小l结尾,编译出来的数字是不带L的
        • eg:    long l1 = 23232655L
    • 通常定义整形变量时,使用int
  • 浮点型
    • 单精度float占4字节存储空间,只能精确到7位有效数字,表数-3.403E38~3.403E38
    • 双精度double占8字节,精度位float的2倍
      • 注意:Java的浮点型常量默认为double型,声明float型常量必须在后面加 'f' 'F'
      • 通常定义浮点型使用double
  • 字符类型char:
    • 1字符 = 2字节
    • char c1 = 'a';             定义方式,只能写一个字符/一个数字/一个汉字等
    • 使用char的用途:
      • 声明一个字符        char里的每个字符都对应一个ASCII码
      • 转义字符      ex:  char c2 = '\n'
      • 或直接使用unicode值表示字符型的常量    (类似于c语言)    ex: char = '\u0123'
    • 注:出现乱码注意下字符集,如utf-8可能无法识别中文,编译运行后会出现乱码
  • 布尔型boolean
    • 取true/false
    • boolean bb1 = true;
    • 常在条件判断、循环中使用
  • 关于转义字符
    • \b    退格符
    • \n    换行符
    • \r    回车符
    • \t    制表符
    • \"    双引号
    • \'    单引号
    • \\    反斜线

*引用数据类型:

(特殊)字符串类型: String  

  • String类型变量的使用
    • String属于引用数据类型,不属于基本数据类型,因此不能使用强制类型转换。
    • 声明String类型变量时,使用一对 ""                    (注意与声明char区分开,与python不太一样)
    • String可以和8种基本数据类型变量做运算,且运算只能是连接运算: +               且运算的结果仍然是String类型
      • 例: char c = 'a';
      •           int num = 10;
      •           String str = "hello";
      •           System.out.println(c + num + str);  //107hello
      •           System.out.println(c + str + num);  //ahello10
      • 例2:打印 *    *
      • "*    *"                        可
      • '*' + '\t' + '*'              不可      (注意char及其背后的ASCII码)
      • '*' + "\t" + '*'             可
      • '*' + '\t' + "*"             不可
      • '*' + ('\t' + "*")           可

五、数据类型的转换

  • 基本数据类型之间的运算规则:
    • 自动类型提升:讨论的只是7种基本数据类型变量间的运算,不包含boolean类型的
      • byte char short --> int --> long --> float --> double             其可表示的数的范围依次增加
      • 当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。 Eg: long + float --> float类型
        • 特别的,bytecharshort三种类型的变量做运算时,结果为int类型
    • 强制类型转换:属于自动类型提升运算的逆运算,即从容量大的数据类型转为容量小的数据类型时会使用
      • 若要把double转为int,如下:
        • double d1 = 12.9;
        • int i1 = (int)d1;        // 截断操作,只取整,无视小数部分(损失精度)
        • System.out.println(i1);
      • 精度损失例2:

int i2 = 129;

byte b = (byte)i2;

System.out.println(b);  //结果为-127,原理与二进制有关,无需深究,知道会造成精度损失就行

  • 注意一:需要使用强转符:()
  • 注意二:强制类型转换,可能导致精度损失
  • 整型常量(常数):默认类型为int
  • 浮点型常量:默认类型为double
    • 因此,诸如 byte b = 12;
    •                        float f1 = b + 12.3;     会报错,因为12.3为double类型

六、运算符

包括: 算数运算符、赋值运算符、比较运算符(关系运算符)、逻辑运算符、位运算符、三元运算符

  • 算数运算符

  • 对于取模运算,结果的符号与被模数的符号相同
  • int m2 = - 12;
  • int n2 = 5;             m2 % n2 = - 2
  • 在开发中经常用%来判断能否除尽的情况
  • (前)++,(后)++,(前)--,(后)-- 
    • 好处:自增1还不会改变变量本身的数据类型,如果short类型 + 1, 由于1常量为int,加完会变为int,故++可以自加完还是short

  • 赋值运算符 =
    • eg:int i1 =10;

int j1 =10;

---------连续赋值--------

int i2, j2;

i2 = j2 =10;

--------------------------

int i3 = 10, j3 =20;

  • --------------------------------------
  • +=、-=、*=、/=、%=                 与++类似,也不会改变变量本身的数据类型,不在赘述
  • 比较运算符

  • 其运算结果为boolean类型
  • == / !=:不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间
  • 逻辑运算符

  1. 逻辑运算符操作的都是boolean类型的变量
  2. 开发中,推荐使用&&或者||,效率更高

  • 位运算符

  1. 位运算符操作的基本都是整数类型
  2. 【面试题】 如何写出高效的2 * 8的实现方式?   答案:2<<3 或 8<<1
  • 三元运算符
    • 条件表达式的结果为boolean类型
    • 根据条件表达式真或假,决定执行表达式1还是表达式2
    • 三元运算符也可以嵌套使用
    • 凡是可以使用三元运算符的地方,都可以改写为if-else,反之不成立
    • 如果程序既可以使用三元运算符,又可以使用if-else,则优先使用三元运算符,因为其运行效率高。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值