Java语言基础

1. 类型转化

自动提升 手动下降 以上规则适用于Java中所有的类型转换

1.1 自动转换

两种类型相互兼容。 目标类型大于源类型。

  1. public class Test1{
  2. public static void main(String [] args){
  3. // 类型转换
  4. // 自动类型转换
  5. // 两种类型要兼容 目标类型(等号左边的)要大于(取值范围大于)源类型(等号右边的)
  6. // 自动提升
  7. byte b1 = 20;
  8. short s1 = b1;
  9. System.out.println(s1);
  10. short s2 = 220;
  11. int i1 = s2;
  12. System.out.println(i1);
  13. int i2 = 5566;
  14. long l1 = i2;
  15. System.out.println(l1);
  16. long l2 = 2233;
  17. float f1 = l2;
  18. System.out.println(f1);
  19. float f2 = 33F;
  20. double d1 = f2;
  21. System.out.println(d1);
  22. }
  23. }

1.2 强制转换

两种类型相互兼容。 目标类型小于原类型。

  1. public class Test2{
  2. public static void main(String [] args){
  3. // 强制类型转换
  4. // 两种类型要兼容 目标类型(等号左边)小于(取值范围小于)源类型(等号右边)
  5. short s1 = 120;
  6. byte b1 = (byte)s1; // 小括号中的内容表示 要强转为的类型
  7. System.out.println(b1);
  8. int i1 = 2233;
  9. short s2 = (short)i1;
  10. System.out.println(s2);
  11. long l1 = 556;
  12. int i2 = (int)l1;
  13. System.out.println(i2);
  14. double d1 = 20.5;
  15. float f1 = (float)d1;
  16. System.out.println(f1);
  17. // 将浮点类型的数值强制转换为整数类型 只保留整数部分
  18. float f2 = 3.14F;
  19. long l2 = (long)f2;
  20. System.out.println(l2);
  21. double d2 = 220.5;
  22. int i3 = (int)d2;
  23. System.out.println(i3);
  24. }
  25. }

特殊情况:将超过目标类型取值范围的数值 强制转换/存放

  1. public class Test3{
  2. public static void main(String [] args){
  3. // 强制类型转换
  4. // 将超过目标类型取值范围的数值 强制转换/存放
  5. int s1 = 128;
  6. byte b1 = (byte)s1;
  7. System.out.println(b1);
  8. short s2 = 257;
  9. byte b2 = (byte)s2;
  10. System.out.println(b2);
  11. short s3 = 129;
  12. byte b3 = (byte)s3;
  13. System.out.println(b3);
  14. // 原码 反码 补码
  15. // 正数的原码 反码 补码都一样 都是其本身
  16. // 负数的反码是符号位保持不变 其余各位取反 1011 0011 --》 1100 1100
  17. // 补码是在反码的基础上 + 1 1100 1100 --》 1100 1101
  18. int ch1 = 67;
  19. char numa = (char)ch1;
  20. System.out.println(numa);
  21. }
  22. }

2. 运算符

2.1 算数运算符

image.png

  1. public class Test4{
  2. public static void main(String [] args){
  3. // 算数运算符
  4. // + - * / %
  5. int a = 20;
  6. int b = 5;
  7. System.out.println("a与b的和是:" +( a + b));
  8. System.out.println("a减去b是:" + (a - b));
  9. System.out.println("a * b的结果是:" + a * b);
  10. System.out.println("a/ b的结果是:" + a / b);
  11. System.out.println("a % b的结果是:" + a % b);
  12. }
  13. }

++ 表示自增1 ++单独作为一条语句书写 在前在后没有任何区别 不是作为一条语句单独执行 在前表示 先 再执行其他 在后 表示先执行其他的 再++ — 表示自减1 —不是作为一条语句单独执行 —在前 表示先— 再执行其他 —在后 表示先执行其他的 再—

  1. public class Test5{
  2. public static void main(String [] args){
  3. // ++ 表示自增1 ++单独作为一条语句书写 在前在后没有任何区别
  4. // 不是作为一条语句单独执行 ++在前表示 先++ 再执行其他
  5. // ++在后 表示先执行其他的 再++
  6. // -- 表示自减1
  7. // --不是作为一条语句单独执行 --在前 表示先-- 再执行其他
  8. // --在后 表示先执行其他的 再--
  9. int a = 10;
  10. a++;
  11. System.out.println(a); // 11
  12. ++a;
  13. System.out.println(a);
  14. int b = 10;
  15. int c = b++;
  16. System.out.println(c);
  17. System.out.println(b);
  18. int e = 5;
  19. int f = ++e;
  20. System.out.println(e);
  21. System.out.println(f);
  22. }
  23. }

2.2 赋值运算符

image.png

  1. public class Test6{
  2. public static void main(String [] args){
  3. // 赋值运算符
  4. int a = 20;
  5. a += 3; // 等价于 a = a + 3;
  6. System.out.println(a);
  7. a -= 10; // 等价于 a = a - 10;
  8. System.out.println(a);
  9. a *= 2; // 等价于 a = a * 2;
  10. System.out.println(a);
  11. a /= 5; // 等价于 a = a / 2;
  12. System.out.println(a); // 因为两个操作数都是int类型 所以不能保留小数
  13. a %= 2; // 等价于 a = a % 2;
  14. System.out.println(a);
  15. }
  16. }

2.3 关系运算符

image.png

  1. public class Test7{
  2. public static void main(String [] args){
  3. // 关系运算符 两个操作数或者表达式关系是否成立
  4. // 最终的结果为boolean类型 要么为true 要么为false
  5. int a = 20;
  6. int b = 20;
  7. System.out.println(a > b);
  8. System.out.println(a < b);
  9. System.out.println(a >= b);
  10. System.out.println(a <= b);
  11. System.out.println(a == b);
  12. System.out.println(a != b);
  13. }
  14. }

2.4 逻辑运算符

image.png

&& 短路与 表示要求两个或者多个表达式同时成立 则结果为真,如果第一个表达式不成立 则后续的表达式不再执行

& 与 表示要求两个或者多个表达式同时成立 则结果为真 没有短路的效果

不管第一个表达式结果如何 都将执行完所有的表达式

|| 短路或 表示要求两个或者多个表达式有一个成立 则结果为真,如果第一个表达式成立 那么后续的不再执行

| 或 表示要求两个或者多个表达式有一个成立 则结果为真

| 没有短路的效果 不管第一个表达式结果如何 都将执行完所有的表达式

  1. public class Test8{
  2. public static void main(String [] args){
  3. // 逻辑运算符
  4. // && 短路与 表示要求两个或者多个表达式同时成立 则结果为真
  5. // 短路与 如果第一个表达式不成立 则后续的表达式不再执行了
  6. // & 与 表示要求两个或者多个表达式同时成立 则结果为真 没有短路的效果
  7. // 不管第一个表达式结果如何 都将执行完所有的表达式
  8. // || 短路或 表示要求两个或者多个表达式有一个成立 则结果为真
  9. // 短路或 如果第一个表达式成立 那么后续的不再执行
  10. // | 或 表示要求两个或者多个表达式有一个成立 则结果为真
  11. // | 没有短路的效果 不管第一个表达式结果如何 都将执行完所有的表达式
  12. int a = 20;
  13. int b = 25;
  14. int c = 21;
  15. System.out.println((a < b) && (b > c) );
  16. System.out.println((a < b) && (b < c) );
  17. System.out.println("=====================================");
  18. System.out.println((a < b) & (b > c) );
  19. System.out.println((a < b) & (b < c) );
  20. System.out.println("=====================================");
  21. System.out.println((a < b) || (b > c) );
  22. System.out.println((a < b) || (b < c) );
  23. System.out.println("=====================================");
  24. System.out.println((a < b) | (b > c) );
  25. System.out.println((a < b) | (b < c) );
  26. }
  27. }
  1. public class Test9{
  2. public static void main(String [] args){
  3. int x=8;
  4. int y=9;
  5. System.out.println((++x==y)&&(++x!=y));
  6. System.out.println(x);
  7. System.out.println("-------------------------------------------1");
  8. int x1=8;
  9. int y1=9;
  10. System.out.println((++x1==y1)||(++x1!=y1));
  11. System.out.println(x1);
  12. System.out.println("-------------------------------------------2");
  13. int x2=8;
  14. int y2=9;
  15. System.out.println((++x2==y2)|(++x2!=y2));
  16. System.out.println(x2);
  17. System.out.println("-------------------------------------------3");
  18. int a=8;
  19. int b=9;
  20. System.out.println( (++a!=b)&(++a==b));
  21. System.out.println(a);
  22. }
  23. }// ctrl + 回车
  1. public class Test10{
  2. public static void main(String [] args){
  3. // ! 表示取反 非真即假 非假即真
  4. System.out.println(!true);
  5. System.out.println(!false);
  6. }
  7. }

2.5 三元运算符

image.png

  1. public class Test11{
  2. public static void main(String [] args){
  3. // 三目(三元)运算符
  4. // 布尔表达式 ? 结果1 : 结果2
  5. // 如果布尔表达式条件成立 则执行结果1 否则执行结果2
  6. int age = 18;
  7. System.out.println(age >= 18 ? "成年了" : "未成年");
  8. int numa = 20;
  9. int numb = numa > 20 ? 25 : 300;
  10. System.out.println(numb);
  11. }
  12. }

3. Scanner接收输入信息

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

使用顺序:

1.导入 java.util.Scanner。

2.声明 Scanner 类型的变量。

3.使用Scanner类中对应的方法(区分类型):

  1. .nextInt(); //获得整数<br /> .nextDouble(); //获得小数<br /> .next(); //获得字符串<br /> .next().charAt(0);//获得单个字符(了解)

注意:如果输入了不匹配的数据,则会产生java.util.InputMismatchException

import java.util.Scanner;
public class Test12{
    public static void main(String [] args){
        // 编写程序获得用户输入的信息 
        // int a = 20;
        // 定义一个扫描器 用于接收用户输入的信息 取名为 input
        Scanner input = new Scanner(System.in);

        // System.out.println("请输入一段文字");
        // String context = input.nextLine();
        // System.out.println(context);

        // 提示用户输入
        System.out.println("请输入您的姓名");
        // 接收内容并且存储到name变量中
        String name = input.next();
        // 将用户输入的名字打印
        System.out.println("您输入的名字是:" + name);

        // 提示用户输入年龄
        System.out.println("请输入您的年龄");

        // 接收用户输入的年龄 并且赋值给age变量
        int age = input.nextInt();

        // 将用户输入的年龄打印
        System.out.println("您输入的年龄是:" + age);

        // 提示用户输入身高
        System.out.println("请输入您的身高");
        // 接收用户输入的身高 并且赋值给height变量
        double height = input.nextDouble();

        // 将用户输入的信息 打印 
        System.out.println("您输入的身高是:" + height);
        System.out.println("-----------------------------");

    }
}