Day02_变量、数据类型、运算符、类型转换、控制台输入

一. 变量

变量组成:

数据类型, 变量名, 值

变量定义流程:

声明: //开辟整数变量空间

​ 数据类型 变量名;

int money;

赋值: //将整数值赋给变量

​ 变量名 = 值;

money = 100;

应用: //

System.out.print(money);

【注】: Java是强类型语言,变量的类型必须与数据的类型一致。

定义变量的三种方式:

  1. 先声明,再赋值
int money;
money = 100;
  1. 声明并赋值
int money = 100;
  1. 多个同类型变量声明与赋值
int a, b, c = 1, d = 2,  e;

二. 数据类型

Java 中的变量具有严格的数据类型区分。

Java 语言中,任何一个值,都有其对应类型的变量

Java 中的数据类型:

基本数据类型:

​ 整型,浮点型,布尔型,字符

引用数据类型:

​ 字符串,数组,对象

基本数据类型:

整型:

类型 | 字节 | 取值范围 | 取值范围

byte |1字节 |- 2^ 7 ~2^ 7-1 | -128 ~127

short |2字节 |- 2^15 ~2^15-1 | -32768 ~32767

int |4字节 |- 2^31~ 2^31-1 | -21亿 ~21亿

long |8字节 |- 2^63 ~2^63-1 | -922亿亿 ~922亿亿

【注】: 整数默认为int 整型, 如需要为long型,需在值得后面追加 “L”。

浮点型:

类型 | 字节 | 负数范围 | 正数范围

float |4字节 |-3.4E+38 ~-1.4E-45 |1.4E-45 ~3.4E+38

double |8字节 |-1.7E+308 ~-4.9E-324 |4.9E-324 ~1.7E+308

【注】: 如:2E3 等价于2*10^3

【注】: 浮点数默认为double型, 如需要为float型,需在值得后面追加 “F”。

类型 | 字节 | 取值范围

boolean |1字节 | true/ false

【注】: Java 中的boolean 不能参与算数运算

字符
前置知识:
ASCII:

​ 美国信息交换标准码 (American Standard Code for Information Interchange)

​ 0 ~9: 30 H ~39 H

​ A ~Z: 41 H ~5A H

​ a ~z: 61 H ~7A H

Unicode:

​ Unicode(统一码、万国码、单一码)是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。

​ Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8UTF-16UTF-32都是将数字转换到程序数据的编码方案。

类型 | 字节 | 取值范围 | 字符编码

char |2字节 | 0~65535 | Unicode编码

字符赋值:

char c1 =  'a';

整数赋值:

char c2 = 65;

进制赋值:

char c3 = '\u0041';
转义字符

\n 换行

\t 缩进(制表位Tab)

\\ 反斜杠

\'单引号

\" 双引号

引用数据类型:

字符串

类型 | 取值范围 | 字符编码

String | " " 之间的值 | Unicode字符集

String str1 = "Hello";

String str2 =  "你好";

类型转换:

自动类型转换:

  1. 两种类型相互兼容
  2. 目标类型大于源类型
byte b = 100;
int i = b;
System.out.println(i);

强制类型转换:

  1. 两种类型相互兼容
  2. 目标类型小于源类型,
int i = 100;
byte b = (byte) i;
System.out.println(b);

规则:

  • boolean的取值不可与其他类型转换

三. 运算符

算术运算符:

+, -, *, /, %

【单目】++, –

【注】: 自增/自减运算时应注意是前缀还是后缀。

​ 前缀:先自增/减,再运算

​ 后缀:先运算,再自增/减

int j = 1;
System.out.println(j++ + ++j + j++);
// 1 + 3 + 3
// 结果为 7
System.out.println(j);
// j == 4

赋值运算符:

=

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

关系运算符:

!=, ==, >, >=, <, <=

【注】: 返回布尔量

int a = 10;
int b = 4;
System.out.println(a > b);			// true
System.out.println(a < b);
System.out.println(a != b);
System.out.println(a == b);
System.out.println(a == b == false); // true
System.out.println(false == false);  // true

逻辑运算符:

&&, || , !

与: 全真为真

或: 全假为假

非: 取反

【注】:对两个布尔量运算,返回布尔量

【注】:有短路求值的特点

​ a && b,表达式a 为假时,不会对表达式b进行运算(表达式b中有非法操作也可)

​ a || b,表达式a为真时,不会对表达式b进行运算

boolean a = true;
int b = 4;
	
System.out.println(a == false && b / 0 == 1);	  // false
System.out.println(a == true || b / 0 == 1);	  // true

三目运算符:

? :

格式:

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

语义:

​ 布尔表达式为true, 返回值1;否则返回值2 。

【注】: 常用来传递参数

int a = 1;
String result1 = a == 2 ? "等于2" : "不等于2";
System.out.println(result1);		// 不等于2
a++;
String result2 = a == 2 ? "等于2" : "不等于2";
System.out.println(result2);		// 等于2
int a = 1;
int b = 1;
int c;

c = a == 2 ? 2 : b == 1 ? 1 : 3;
System.out.println(b);			// 1

【注】: 右结合性,也具备短路求值特点

int a = 1, b = 2;
int c = 3, d = 4;
int m = 8 > 7 ? a : b == 2 ? ++c : d;
System.out.println(c);		// 3
System.out.println(m);		// 1
int a = 1, b = 2;
int c = 3, d = 4;
int m = 8 < 7 ? a : b == 2 ? ++c : d;
System.out.println(c);		// 4
System.out.println(m);		// 4

四. 类型提升

进行算术运算时:

  1. 两个操作数有一个为double,计算结果提升为double
  2. 如果操作数中没有double,有一个为float,计算结果提升为float
  3. 如果操作数中没有float, 有一个为long,计算结果提升为long
  4. 如果操作数中没有long,有一个为int,计算结果提升为int
  5. 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int

特殊:

  • 任何类型与 String 拼接(+),其结果自动提升为String

五. 控制台输入

程序运行中,可在控制台手动录入数据,再让程序继续运行。

导包语法:

​ import 包名.类名;

使用顺序:

​ 导入 java.util.Scanner

import java.util.Scanner;

​ 声明 Scanner 类型的变量

Scanner input = new Scanner(System.in);

​ 使用 Scanner类中对应的方法

​ .nextInt(); // 获得整数

​ .nextDouble(); // 获得小数

​ .next(); // 获得字符串

​ .next().charAt(0); // 获得单个字符

【注】: 如果输入流不匹配的数据,则会抛出异常

java.util.InputMismatchException

猜你喜欢

转载自blog.csdn.net/qq_41612797/article/details/107674422