02_变量、数据类型、表达式

变量、数据类型、表达式

一、变量
  1. 概念:计算中的一块存储空间,是存储数据的基本单位。【理解】

  2. 组成:数据类型、变量名、数据。

  3. 变量的定义:【重点】

    (1) 声明变量:数据类型 变量名;

    ​ 赋值:变量名 = 值;

​ (2) 声明的同时 赋值:数据类型 变量名 = 值;

​ (3) 同时定义多个同类型的变量:

​ 数据类型 变量名1,变量名2 =值,变量名3;

二、数据类型【重点】
  1. 基本数据类型(简单数据类型、原始数据类型)—》8种基本数据类型

    (1) 整数类型

​ 关键字

​ byte 1B -128~127

​ short 2B -32768~32767

​ int 4B -2147483648~ 2147483647

​ long 8B -922京 ~ 922京-1

​ 注意:long类型的字面值后面需要加 L 或是 l,通常用 L(区分 数据1和字母l)

​ 字面值:程序中可以给某个对应类型变量赋的数据

​ 扩充: 字节 -> Byte简写为B --> 一个字节等于 8位(bite简写 b)

​ 1 B = 8 b

​ 1024B = 1KB

​ 1024KB = 1MB

​ 1024MB = 1GB

​ 1024GB = 1TB

(2) 小数类型(浮点类型)

​ a. 单精度浮点: float 4B

​ b. 双精度浮点: double 8B

​ 注意:

​ I. float 字面值后面必须加 F 或是 f;

​ double字面值的后面可以添加 d 或是 D,也可以不加

​ II. float 和 double 都可以采用科学计数法形式存储,近似值。

​ 例如:2.14748365E9 等价于 2.14748365 * 10 ^9

​ 面试题目: int 类型变量 和 float类型的哪一个存储的数据范围大一些?

​ 解析: float类型,虽然 int 和 float 都是 4B ,但是 float 可以采用科学技术法形式存储。

(3) 字符类型

​ 关键字 : char 2B

​ 字面值的类型:

​ a. 用单引号引起来的一个 字符 ,例如:char c = ‘A’; // char c2 = ‘中’;

​ 注意:Java中一个汉字代表一个字符

​ b. 以整数数值行存储字符内容,整数范围:0~65535

​ char c = 65;

​ c. 以 unicode形式存储:char c3 = ‘\u0041’;

​ 转义字符:

​ \n : 换行

​ \t : 水平跳格

​ \ \ : 单个反斜杠

​ \ ’ : 单引号

​ \ " : 双引号

​ 注意:此处的符号都是英文符号。

(4) 布尔类型

​ 关键字 : boolean 字面值仅有 true 和 false -》1B(一般不关注)

​ 注意 : Java中的boolean区分于 C中的 boolean ,C语言中的0-false;1-true;但是

​ Java中的boolean 只能接受 true或是 false,和 0/1没有任何关系。

Java是强类型的语言:对应类型的数据只能存储对应类型的变量中。
  1. 引用数据类型(对象数据类型)

    类、接口、字符串、数组等类型的数据都是引用数据类型。

    目前常用的引用数据类型:String

    字符串(String):用双引号引起来的一个或是多个字符。 String s = “hello”;

三、数据的自动类型提升
  1. 两个变量之间相互赋值。自动类型提升规则如下:

    (1) byte -> short ->int ->long -> float -> double

    ​ 小数据类型的变量 可以直接赋值为大数据类型的变量-》自动提升为大数据类型

    (2) char - >int ->long ->float->double

    1. 强制类型转换:

      (1) 大数据类型的变量赋值给小数据类型,需要用到强制类型转换

      (2) 强制类型转换问语法:

      ​ 目标类型 变量名 = (目标类型) 源数据类型的变量名;

      ​ 例如: double d = 12.5;

      ​ int i = (int)d;

      (3) 强制转换的结果:

      ​ a. 小数据类型变量强制转换为整数类型:截断 -》取整数部分

      ​ 例如: double d = 12.9;

      ​ int i = (int)d ; // 结果 12

      ​ b. 整数类型的变量中的数据合理,数据强转结果完整

      ​ 例如: int i = 15;

      ​ byte b = (byte) i ; // 结果打印 15

      ​ c. 整数类型的变量中的数据不合理,数据强转结果截断

      ​ 例如: int i = 257;

      ​ byte b = (byte)i; // 结果 1

      ​ 注意: boolean 类型的变量不能参与 数据类型的提升。

四、表达式
  1. 概念:由变量、运算符、字面值等组成一个式子,通常会有一个结果产生。

  2. 两变量参与运算,表达式的结果类型规则如下:

    (1) 如果参与运算的变量有一个为double类型 ,结果就是double类型;

    (2) 如果参与运算的变量没有double 类型,有一个为 float 类型 ,结果类型为 float;

    (3) 如果参与运算的变量没有 double/float,有一个 为 long类型,结果类型为 long

    (4) 其余的情况全都是 int 类型的结果。

    ​ 例如: byte b = 1;

    ​ byte b2 = b + 1; // 编译报错,违反了两个变量参与运算的提升规则,结果应为 int 类型

五、运算符
  1. 算数运算符: +(加) -(减) *(乘) / (除) %(取模、取余数)

    ​ 注意: 如果 +两端有一个 数类型为 String(字符串类型),则代表字符串的拼接或是连接。

  2. 赋值运算符 : = += *= -= /= %=

    ​ 注意 += 等综合运算符没有自动类型提升。

    ​ 面试题目:分别写出以下代码编译是否通过,不通过,解释原因,通过,打印结果。

    ​ ① byte b = 1;

    ​ b = b+1; //编译不通过,结果类型应为 int 类型

    ​ ② byte b = 1;

    ​ b += 1; //编译通过,结果为 2

  3. 一元运算符: ++(自增) --(自减)

    ​ (1) a++ : 先 使用 a 原始数据作为表达式的结果,再 将 a 自身加 1; —》先使用,再加1

    ​ int a = 1;

    ​ int c = a++ ; // int c = a ; a = a+1;

    ​ 结果 : c = 1; a = 2;

    ​ (2) ++a:先将 a 的数据加1运算,再使用 a 中的数据作为表达式的结果。–》先加,再使用

    ​ 注意:开发时关注于 让变量自身加1运算/减1运算,使用 a++/++a / a–/--a,通常不关注,

    ​ 两者区别面试题目中的内容。

  4. 关系运算符

    大于: >

    大于等于 :>=

    小于: <

    小于等于:<=

    不等于: !=

    如果 用关系运算符连接两个变量,用于判断关系是否成立,关系成立-true,关系不成立-flase,

    结果类型为boolean类型的表达式称为布尔表达式。

  5. 逻辑运算符

    (1) && :逻辑与,只有当两边都为true的情况下,结果才为true。有一个为false,结果就是false;(短路)

    (2) ||:逻辑或,只有两端有一个为true,结果就是为true,同时为false,结果才为false.(短路)

    (3) ! : 逻辑非,对结果取反。

    (4) & :与,只有当两边都为true的情况下,结果才为true。(非短路)

    (5) | :或,只有两端有一个为true,结果就是为true,同时为false,结果才为false.(非短路)

    面试题目:写出 && 和 & 的区别。

    ​ 解析:

    ​ 相同点:与的关系,两边布尔表达式同时 为 true,结果才为 true.

    ​ 不同点: && :短路运算符,一旦第一个布尔表达式的结果为 false,后面的布尔表达式不在运算

    ​ & :非短路运算符,不管前面的布尔表达式是否为 false,后面的布尔表达式必须执行。

  6. 条件运算符(三元运算符、三目运算符)

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

    (2) 执行的原理:如果布尔表达式结果为 true,执行 表达式1,如果为false,执行表达式2。

六、Scanner(扫描仪)
  1. 使用的步骤:创建扫描仪

    java.util.Scanner sc = new java.util.Scanner(System.in);

  2. 使用:

    (1) 输入一个整数: int a = sc.nextInt();

    (2) 输入一个小数: double s = sc.nextDouble();

    (3) 输入一个字符串:String s = sc.next(); // String s = sc.nextLine();

    (4) 输入一个字符:char c = sc.next().charAt(0);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值