变量和数据类型

变量和数据类型

本章目标:

  • 掌握标识符和关键字
  • 掌握变量和常量的使用
  • 了解Java中的数据类型
  • 掌握数据类型转换

1. 变量、数据类型

1.1 变量(重点)

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.简言之变量就是用来存数的而数据存储的区域叫内存.计算机的内存类似于人的大脑,用来记忆大量运算时需要的数据.

内存是一个物理设备,其原理类似于生活中的旅馆,要存储的数据就好比要住宿的客人.

首先:计算机会根据变量的数据类型为它在内存中分配一块空间,每个空间都有一个独一无二的内存地址(好比根据客人的类型,分配一个合适的房间,而每个房间的房间号都是不一样的);

然后:将变量对应的值(数据)存放在这块空间中(好比客人入住);

运算时,计算机会根据内存地址找到内存空间中存储的数据.但是内存地址不好记,通常用16进制表示。因此,我们给这块内存空间起了一个别名,通常根据别名就能找到对应空间存储的数据.而变量就是一个数据存储空间的表示.

变量对比生活中的旅馆中房间的关系如下:变量和数据类型_第1张图片

1.2 Java常用的数据类型

数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。

数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。

  • 基本数据类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符、整数和布尔值。
  • 引用数据类型:也叫复合数据类型,一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

注意String属于引用类型

Java中基本数据类型和引用数据类型

1. 基本数据类型(八大类):
  • byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127

  • short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717

  • int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647

  • long:长整型,在内存中占64位,即8个字节,取值范围:(-263~263-1)

  • float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位)

  • double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节

  • char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,

  • boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false)

基本数据类型从小到大依次为:

byte,short,char,int,long,float,double
2. 引用数据类型:

数组,类,接口(后期会陆续讲到)

1.3 变量声明以及使用

变量定义的格式包括三个要素: 数据类型 、 变量名 、 数据值 。

格式:

数据类型 变量名 = 数据值;

变量的使用:
变量和数据类型_第2张图片

代码演示如下:

//定义字节型变量
byte b = 100;
System.out.println(b);
//定义短整型变量
short s = 1000;
System.out.println(s);
//定义整型变量
int i = 123456;
System.out.println(i);
//定义长整型变量
long l = 12345678900L;
System.out.println(l);
//定义单精度浮点型变量
float f = 5.5F;
System.out.println(f);
//定义双精度浮点型变量
double d = 8.5;
System.out.println(d);
//定义布尔型变量
boolean bool = false;
System.out.println(bool);
//定义字符型变量
char c = 'A';
System.out.println(c);

long类型:建议数据后加L表示。 float类型:建议数据后加F表示。

注意事项

  • 变量名称:在同一个大括号范围内,变量的名字不可以相同。
  • 变量赋值:定义的变量,不赋值不能使用。

1.4 变量命名规则

  1. 首字母是英文字母、$和下划线,由字母、数字和下划线组成。
  2. 变量的命名遵循见名知义的原则。
    [比如名字就用 name ,而不是用a、b、c这样的命名,不然又要找找找]
  3. 用驼峰命名法命名多个单词组成的变量名。 [比如: sumScore ]
  4. 变量名[方法名]首字母建议不用大写字母。[首字母大写一般是用来标识类名的] -- 业内规范
  5. 变量名不要使用Java关键字
    变量和数据类型_第3张图片

备注:

变量命名神器Codelf


2. 运算符

运算符是一种“功能”符号,用以通知 Java 进行相关的运算。

Java 语言中常用的运算符可分为如下几种:

  • Ø 算术运算符
  • Ø 赋值运算符
  • Ø 比较运算符
  • Ø 逻辑运算符
  • Ø 条件运算符

2.1 赋值运算符:

赋值运算符是指为变量或常量指定数值的符号。

如可以使用 “=” 将右边的表达式结果赋给左边的操作数。

=,+=,-=,*=,/=,%=

变量和数据类型_第4张图片

2.2 算术运算符:

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LsLuS6zP-1633921731982)(S1_Java_CH02笔记.assets/image-20200922215432223.png)]

备注:

其中,++ 和 – 既可以出现在操作数的左边,也可以出现在右边,但结果是不同滴

a++:先赋值,后自增

++a:先自增,后赋值

自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!

2.3 比较运算符:

比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。

比较的结果是一个boolean类型的数据( true 或 false )。

Java 中常用的比较运算符如下表所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwU6N6MM-1633921731983)(S1_Java_CH02笔记.assets/image-20200922215549944.png)]

注意:

> 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型

== 、 != 两边的操作数既可以是数值类型,也可以是引用类型

2.4 逻辑运算符:

逻辑运算符主要用于进行逻辑运算。

Java 中常用的逻辑运算符如下表所示:

  • && 称为逻辑与运算符。只有当符号两边的表达式都为真,结果才为真。简单的说:遇假则假
  • || 称为逻辑或操作符。若符号两边的表达式任意一个为真,结果都为真。简单的说:遇真则真
  • ! 称为逻辑非运算符。用于取反操。若!后面的表达式为真,则结果为假。简单的说:非真即假

代码演示如下:

public class Test {
  public static void main(String[] args) {
     boolean a = true;
     boolean b = false;
     System.out.println("a && b = " + (a&&b));//a && b = false
     System.out.println("a || b = " + (a||b) );//a || b = true
     System.out.println("!(a && b) = " + !(a && b));//!(a && b) = true
  }
}
补充:

逻辑运算符的不常用的两个符号:

  • & 也称为逻辑与运算符.与&&作用一样,当两边的表达式都为true的时候,整个运算结果才为true,否则为false。
    但是执行原理不同,&&会出现短路功能,也称为短路与,当第一个表达式的值为false的时候,
    则不再计算第二个表达式;&则两个表达式都执行。
  • | 也称为逻辑或运算符.与||作用一样,只要有一个表达式true,运算结果就为true;
    但是执行原理不同,||会出现短路功能,也称为短路或,当第一个表达式的值为true的时候,
    则不再计算第二个表达式;而|则两个表达式都执行。

代码演示&如下:

int a = 5;
boolean b = a > 7 & a++ > 1;
System.out.println(a);// a = 6;

代码演示|如下:

int a = 5;
boolean b = a > 3 | a++ > 1;
System.out.println(a);// a = 6;	
继续补充:

& |还作为位运算符,当& |符号两边的都为数字时,做位运算.

位运算(理解)是程序设计中对位模式按位或二进制数的一元和二元操作。

  • &(按位与)是将两个数字转换成二进制进行相应位比较,若相应位置上的值都为1时,返回值的相应位为1,否则为0
  • |(按位或)是将两个数字转换成二进制进行相应位比较,若相应位置上的值有一个为1时,返回值的相应位为1。否则为0

代码演示如下:

int a = 5&5;// 101 101
System.out.println(a);//结果为二进制的101,转换为十进制是5 故 a=5
int a = 4|1;// 100 001
System.out.println(a);//结果为二进制的101,转换为十进制是5 故 a=5

2.5 条件运算符(三元运算符)

条件运算符也被称为三元运算符。

该运算符有3个表达式,并且需要判断布尔表达式的值。

该运算符的主要是决定哪个值应该赋值给变量。

语法形式:

布尔表达式 ? 表达式1 :表达式2

运算过程:如果布尔表达式的值为true ,则返回表达式1 的值,否则返回 表达式2 的值

示例代码如下:

public class Test {
   public static void main(String[] args){
      int a , b;
      a = 10;
      // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
      b = (a == 1) ? 20 : 30;
      System.out.println( "b= " +  b );//b=30
 
      // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
      b = (a == 10) ? 20 : 30;
      System.out.println( "b= : " + b );//b=20
   }
}

2.6 算术运算符的优先级别:

变量和数据类型_第5张图片

2.7 基本数据类型转换:

为什么需要数据类型转换?

因为计算机对不同的数据类型有不同的保存方式,例如:int(整型) 类型在32位计算机中,占4位。而double(双精度)类型在32位计算机中,占8位。当高位转向低位的时候,如果不进行类型转换,就会造成数据溢出。为保护数据信息,需要进行数据类型转换。

基本数据类型从小到大依次为: byte,short,char,int,long,float,double

类型转换的两种方式:

  1. 自动类型转换:从小类型到大类型 例如:double d = 10;
  2. 强制类型转换:从大类型到小类型
    语法: (要转换为的类型)变量
    例如:int i = (int)10.5;
    注意:强转有可能会溢出或精度丢失

类型转换的两点规则:

  1. 整数直接量可以直接赋值给byte,short,char,但不能超范围
  2. byte,short,char型数据参与运算时,先一律转换为int再运算

补充Scanner的用法:

  1. 在package下导入Scanner类:

    import java.util.Scanner;
    
  2. 在main()方法中,创建Scanner对象

    Scanner scan = new Scanner(System.in);
    
  3. 获得键盘输入的数据:

    System.out.println("请输入年龄:");      
    int age = scan.nextInt();
    System.out.println("请输入单价:");
    double price = scan.nextDouble(); 
    

你可能感兴趣的:(java)