数据类型、运算符

一、数据类型

1.标识符

标识符是用来给变量、类、方法以及包进行命名的。标识符需要遵守一定的规则:

  • 标识符是由字母、下划线“_”、美元符“$”和数字的任意组合。
  • 标识符必须以字母、下划线“_”、美元符“$”开头。
  • Java 标识符大小写敏感,且长度无限制。
  • 标识符不可以是Java的关键字。

2.变量

1.变量的本质

变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。

Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。

变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。

注意:

  • 变量类型可以是基本数据类型,也可以是引用类型
  • 变量名必须是合法标识符

2.变量分类

可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量(也称为类变量)。

类型声明位置从属于生命周期
局部变量方法或语句块内部方法/语句块从声明位置开始,直到方法或语句块执行完毕,局部变量消失。
成员变量类内部,方法外部对象从声明位置开始,直到方法或语句块执行完毕,局部变量消失。
静态变量类内部,static修饰类被加载,静态变量就有效;类被卸载,静态变量消失。

3.常量

常量通常指的是一个固定的值,例如:1、2、'a'、'b'、”hello”等。

在Java语言中,用关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。

命名规范(只是规范,并不是不能这么写,规范是程序员的基本准则):

  • 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
  • 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
  • 类名使用 UpperCamelCase 风格,单词首字母大写的驼峰原则。
  • 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,第一个单词首字母小写的驼峰原则。
  • 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不闲名字长。
  • 不允许任何魔法值 即未经预先定义的常量 直接出现在代码中。
  • 在 long 或者 Long 赋值时,数值后使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解。

4.数据类型

Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。

8种基本数据类型:

  • 数值型- byte、 short、int、 long、float、 double
  • 字符型- char
  • 布尔型-boolean 

引用数据类型:

  • 类(class)
  • 接口(interface)
  • 数组

引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!

5.数据类型转换

Java程序中要求参与计算的数据,必须要保证数据类型一致,如果数据类型不一致将发生类型的转换。

1.自动转换:将取值范围小的类型自动提升为取值范围大的类型 。

范围小的类型向范围大的类型提升, byte short char 运算时直接提升为 int

byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

2.强制转换:将取值范围大的类型强制转换成取值范围小的类型。

自动转换是Java自动执行的,而强制转换需要我们自己手动执行。

当一个 short 类型与 int 类型相加,我们知道会类型提升,但是还想给结果赋值给 short 类型变量,就需要强制转换。

注意:

  • 浮点转成整数,直接取消小数点,可能造成数据损失精度。
  • int 强制转成 short 砍掉2个字节,可能造成数据丢失。

二、运算符

1.算数运算符:

算数运算符 
+
加法运算,字符串连接运算
-
减法运算
*
乘法运算
/除法运算
%
取模运算,两个数字相除取余数
++、--
自增、自减运算
注意 :%取余结果符号与左边符号相同
public class Demo1 {
    public static void main(String[] args) {
        System.out.println(5 % 3);  //2
        System.out.println(-5 % 3); //-2
        System.out.println(5 % -3); //2
        System.out.println(-5 % -3);//-2
    }
}

自增自减

public class Demo1 {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int c = 10; 
        a = b++;
        c = --a;
        b = ++a;
        a = c--;
        System.out.println(a); //9
        System.out.println(b); //10
        System.out.println(c); //8
    }
}

符号在字符串中的操作:符号在遇到字符串的时候,表示连接、拼接的含义。"a"+"b"的结果是“ab”,连接含义。

public class Demo1 {
    public static void main(String[] args) {
        // +遇到字符串表示连接
        //  如果要在字符串后面做+运算 就需要使用括号
        System.out.println(5 + 5 + "java"); //10java
        System.out.println("java" + 5 + 5); //java55
        System.out.println("java" + (5 + 5)); //java10
    }
}

2.赋值运算符:

赋值运算符 
=
赋值
+=
加后赋值(a+=5 就是 a=a+5)
-=
减后赋值
*=
乘后赋值
/=
除后赋值
%=
取模后赋值
public class Demo1 {
    public static void main(String[] args) {
        byte b1 = 1;
        byte b2 = 2;
        // b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),
        // 已经确定了 1+2 的 结果并没有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。
        byte b3 = 1 + 2;
        // b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,
        // 编译器javac不确定b2+b3 的结果是什么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。
        byte b4 = b1 + b2;

    }
}
 

3.比较运算符

比较运算符 
==
比较符号两边数据是否相等,相等结果是 true。
<
比较符号左边的数据是否小于右边的数据,如果小于结果是 true
>
比较符号左边的数据是否大于右边的数据,如果大于结果是 true
<=
比较符号左边的数据是否小于或者等于右边的数据,如果小于或等于结果是 true
>=
比较符号左边的数据是否大于或者等于右边的数据,如果小于或等于结果是 true
!=
不等于符号 ,如果符号两边的数据不相等,结果是 true
public class Demo1 {
    public static void main(String[] args) {
        short s = 1;
        // += 是一个运算符,只运算一次,并带有强制转换的特点,也就是说 s += 1 就是 s = (short)(s + 1)
        s += 1;
        System.out.println(s);  //2
    }
}

4.逻辑运算符

逻辑运算符,是用来对两个布尔类型进行运算的,运算结果都是布尔值 true 或者 false。

逻辑运算符
运算规则
示例
结果
&
false&true
false
|
false|true
true
^
异或
false^true
true
!!truefalse
&&
短路与
false&&true
false
||
短路或
false||true
true

运算符优先级:逻辑非>逻辑与>逻辑或

  • && 短路与

如果表达式左边的为true还会执行后面的,为false不执行后面的 。

  • || 短路或

如果表达式左边为true就不执行后面的,为false执行后面的。

5.三元运算符

三元运算符格式:

数据类型 变量名 = 布尔类型表达式?结果1:结果2;

三元运算符计算方式:
  • 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。
  • 布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。
public class Demo1 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a > b ? a : b;
        System.out.println(c);
    }
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值