Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句

文章目录

      • 1、基本数据类型转换
        • 1.1、自动类型转换
          • 1.1.1、自动类型转换注意细节
        • 1.2、强制类型转换
          • 1.2.1、强制类型转换注意细节
        • 1.3、基本数据类型和 String 类型的转换
          • 1.3.1、定义
          • 1.3.2、基本类型转String类型
          • 1.3.3、String类型转基本数据类型
          • 1.3.4、字符串转成字符char
          • 1.3.5、注意事项
      • 2、运算符
        • 2.1、定义
        • 2.2、运算符的分类
          • 2.2.1、算术运算符
            • 2.2.1.1、前++ 和 后++
            • 2.2.1.2、/ 的使用
            • 2.2.1.3、% 取模 ,取余
          • 2.2.2、关系运算符(比较运算符)
            • 2.2.2.1、细节说明
          • 2.2.3、逻辑运算符
            • 2.2.3.1、&& 和 & 基本规则
            • 2.2.3.2、&& 和 & 使用区别
            • 2.2.3.3、|| 和 | 基本规则
            • 2.2.3.4、|| 和 | 使用区别
          • 2.2.4、! 取反
            • 2.2.4.1、! 基本规则
          • 2.2.5、^ 逻辑异或
          • 2.2.6、赋值运算符
            • 2.2.6.1、赋值运算符的分类
            • 2.2.6.2、赋值运算符特点
          • 2.2.7、三元运算符
            • 2.2.7.1、运算规则
            • 2.2.7.2、使用细节
        • 2.3、运算符优先级
        • 2.4、标识符的命名规则和规范
      • 3、标识符命名规范
      • 4、关键字
      • 5、保留字
      • 6、键盘输入语句

1、基本数据类型转换

1.1、自动类型转换

Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句_第1张图片

1.1.1、自动类型转换注意细节

细节一: 有多种类型的数据混合运算时, 系统首先自动将所有数据转换成容量最大的那种数据类型, 然后再进行计算

int n1 = 10;
float n2 = n1 + 3.5;  // 错误 double -> float
double n3 = n1 + 3.5;
double n4 = n1 + 3.6d;
float n5 = n1 + 3.3f;

细节二:当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时, 就会报错, 反之就会进行自动类型转换

int n6 = 1.5;  // 错误 double -> int

细节三:(byte, short) 和 char 之间不会相互自动转换
当把具体数赋给byte时,先判断该数是否在byte范围内,如果是就可以

byte b1 = 10;  // 对 , -128-127 
int n2 = 1;  // n2 是 int 
byte b2 = n2;  // 错误,原因: 如果是变量赋值,判断类型
char c1 = b1;  // 错误, 原因: byte不能自动转成char

细节四:byte,short,char 他们三者可以计算,在计算时首先转换为 int 类型

byte b2 = 1; 
byte b3 = 2; 
short s1 = 1; 
short s2 = b2 + s1;  //错, b2 + s1 => int 
int s2 = b2 + s1;  //对, b2 + s1 => int
byte b4 = b2 + b3;  //错误: b2 + b3 => int

细节五:boolean 不参与转换

boolean pass = true;
int num100 = pass;  // boolean 不参与类型的自动转换

细节六:自动提升原则, 表达式结果的类型自动提升为 操作数中最大的类型

char a1 = 10;
short a2 = 15;
int a3 = 20;
double a4 = 25;
System.out.println(a1 + a2 + a3 + a4);  // double 70.0
1.2、强制类型转换

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符 ( ),但可能造成精度降低或溢出,要格外注意

int i = (int) 1.1;
System.out.println(i);  // 1

int j = 10;
byte b = (byte) j;
System.out.println(b);  // 10
1.2.1、强制类型转换注意细节

细节一:当进行数据的大小,从大到小,就需要使用到强制转换

int k = 100;
char k1 = (char) k;
System.out.println(k1);

细节二:强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

int x = (int) 10 * 3.5 + 6 * 1.5;  // 编译错误: double -> int
int x = (int) (10 * 3.5 + 6 * 1.5);  // (int) 44.0 -> 44
System.out.println(x);  // 44

细节三:char类型可以保存int的常量值,但不能保存int的变量值,需要强转

char c1 = 100;
int m = c1;
// char c2 = m;  // 错误
char c3 = (char) m;
System.out.println(c3);  // 100对应的字符是d

细节四:byte,short,char类型再进行运算时,当作int类型处理

1.1.1细节四
1.3、基本数据类型和 String 类型的转换
1.3.1、定义

在程序开发中,我们经常需要将基本数据类型转换成String类型,或者将String类型转换成基本数据类型。

1.3.2、基本类型转String类型

语法:将基本类型的值 + “”即可。

int n1 = 100; 
float f1 = 1.1F; 
double d1 = 4.5;
boolean b1 = true; 
String s1 = n1 + ""; 
String s2 = f1 + ""; 
String s3 = d1 + ""; 
String s4 = b1 + ""; 
System.out.println(s1 + " " + s2 + " " + s3 + " " + s4);
1.3.3、String类型转基本数据类型

语法:通过基本类型的包装类调用parseXXX方法即可。

String s5 = "123";
int num1 = Integer.parseInt(s5); 
double num2 = Double.parseDouble(s5); 
float num3 = Float.parseFloat(s5); 
long num4 = Long.parseLong(s5);
byte num5 = Byte.parseByte(s5); 
boolean b = Boolean.parseBoolean("true"); 
short num6 = Short.parseShort(s5); System.out.println("==================="); System.out.println(num1);  //123 
System.out.println(num2);  //123.0 
System.out.println(num3);  //123.0 
System.out.println(num4);  //123 
System.out.println(num5);  //123 
System.out.println(num6);  //123 
System.out.println(b);  //true
1.3.4、字符串转成字符char

得到字符串的第一个字符

s5.charAt(0)  // 得到s5字符串的第一个字符1
System.out.println(s5.charAt(0));
1.3.5、注意事项

1、在将 String 类型转成 基本数据类型时,比如我们可以把 “123” ,转成一 个整数,但是不能把 “hello” 转成一个整数。
2、如果格式不正确,就会抛出异常,程序就会终止。

2、运算符

2.1、定义

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

2.2、运算符的分类
  • 算术运算符
  • 赋值运算符
  • 关系运算符【比较运算符】
  • 逻辑运算符
  • 位运算符
  • 三元运算符
2.2.1、算术运算符

算术运算符是对数值类型的变量进行运算的,在 Java 程序中使用的非常多。
Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句_第2张图片

2.2.1.1、前++ 和 后++
//++的使用
int i = 10; 
i++;  //自增 等价于 i = i + 1; => i = 11 
++i;  //自增 等价于 i = i + 1; => i = 12
System.out.println("i=" + i);  //12

作为表达式使用:
前++: ++i 先自增后赋值 
后++: i++先赋值后自增
int j = 8; 
int k = ++j;  // 等价 j=j+1;k=j; 
int k = j++;  // 等价 k =j;j=j+1; 
System.out.println("k=" + k + "j=" + j);  // 8 9
2.2.1.2、/ 的使用
System.out.println(10 / 4);  //从数学来看是2.5, java中是2 
System.out.println(10.0 / 4);  //java中是2.5
2.2.1.3、% 取模 ,取余
// 在 % 的本质:a % b = a - a / b * b 
-10 % 3 => -10 - (-10) / 3 * 3 = -10 + 9 = -1 
10 % -3 = 10 - 10 / (-3) * (-3) = 10 - 9 = 1 
-10 % -3 = (-10) - (-10) / (-3) * (-3) = -10 + 9 = -1 
System.out.println(10 % 3);  //1 
System.out.println(-10 % 3);  // -1 
System.out.println(10 % -3);  //1 
System.out.println(-10 % -3);  //-1
2.2.2、关系运算符(比较运算符)

1、关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false
2、关系表达式 经常用在 if 结构的条件中或循环结构的条件中

Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句_第3张图片

2.2.2.1、细节说明

1、关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。
2、关系运算符组成的表达式,我们称为关系表达式。 a > b
3、比较运算符"==“不能误写成”="。

2.2.3、逻辑运算符

用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。

Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句_第4张图片
说明逻辑运算规则:

1、a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
2、 a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false 
3、 a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
4、a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false 
5!a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true 
6、a^b : 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
2.2.3.1、&& 和 & 基本规则
名称 语法 特点
短路与&& 条件 1&&条件 2 两个条件都为 true,结果为 true,否则 false
逻辑与& 条件 1&条件 2 两个条件都为 true,结果为 true,否则 false
2.2.3.2、&& 和 & 使用区别
1&&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高 
2& 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
3、开发中, 我们使用的基本是使用短路与&&, 效率高
2.2.3.3、|| 和 | 基本规则
名称 语法 特点
短路或 条件 1||条件 2 两个条件中只要有一个成立,结果为 true,否则为 false
逻辑或 条件 1|条件 2 只要有一个条件成立,结果为 true,否则为 false
2.2.3.4、|| 和 | 使用区别
1||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
2| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
3、开发中,我们基本使用 ||
2.2.4、! 取反
2.2.4.1、! 基本规则
名称 语法 特点
! 非(取反) !条件 如果条件本身成立,结果为 false,否则为 true
2.2.5、^ 逻辑异或

a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false

2.2.6、赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量。

2.2.6.1、赋值运算符的分类
基本赋值运算符 int a = 10; 
复合赋值运算符 +=-=*=/=%= 等
如: a += b; [等价 a = a + b; ] a -= b; [等价 a = a - b; ]
2.2.6.2、赋值运算符特点
1、运算顺序从右往左 int num = a + b + c; 
2、赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值 int num = 20; int num2= 78 * 34 - 10; int num3 = a; 
3、复合赋值运算符等价于下面的效果 比如:a+=3;等价于 a=a+3; 其他类推 
4、复合赋值运算符会进行类型转换。 byte b = 2; b+=3; b++;
2.2.7、三元运算符

条件表达式 ? 表达式 1: 表达式 2;

2.2.7.1、运算规则
  1. 如果条件表达式为 true,运算后的结果是表达式 1;
  2. 如果条件表达式为 false,运算后的结果是表达式 2;
2.2.7.2、使用细节
1、表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换) 
int a = 3; 
int b = 8; 
int c = a > b ? (int)1.1 : (int)3.4;  // 可以 
double d = a > b ? a : b + 3;  // 可以,满足 int -> double
2、三元运算符可以转成 if--else 语句
2.3、运算符优先级

1、运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序,上一行运算符总优先于下一行。
2、只有单目运算符、赋值运算符是从右向左运算的

Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句_第5张图片

2.4、标识符的命名规则和规范

Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句_第6张图片

3、标识符命名规范

1、包名:多单词组成时所有字母都小写:aaa.bbb.ccc
2、类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰] 比如: TankShotGame
3、变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小 驼峰, 简称 驼峰法] 比如: tankShotGame
4、常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ 比如 :定义一个所得税率 TAX_RATE

4、关键字

定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串
特点:关键字中所有字母都为小写

Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句_第7张图片
Java基本数据类型转换、运算符、标识符命名规范、关键字、保留字及键盘输入语句_第8张图片

5、保留字

Java 保留字:现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留 字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const。

6、键盘输入语句

在编程中需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java , 需要一个 扫描器(对象), 就是 Scanner
1、导入该类的所在包, java.util.*
2、创建该类对象(声明变量)
3、调用里面的功能

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("username:");
        String username = scanner.next();  // 接收用户输入String
        System.out.print("age:");
        int age = scanner.nextInt();  // 接收用户输入int
        System.out.print("salary:");
        double salary = scanner.nextDouble();  // 接收用户输入double
        System.out.println("username=" + username + " age=" + age + " salary=" + salary);
    }
}

输出:
username:allen
age:18
salary:19000.50
username=allen age=18 salary=19000.5

你可能感兴趣的:(java,java)