栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA入门基础--(上课的笔记2)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA入门基础--(上课的笔记2)

1.1 隐式类型转换

  • 规则: 是用小范围的数据类型 直接转到 大范围的数据类型

  • 范围的排序:

    byte < short = char < int < long < float < double

  • 作用-用途:比如两个软件进行交互,对方发给你一个整数, 你并不知道这个数据有多大。我就需要用long类型去接收。 不管他发的有多大的整数, 我long都能接收。

  • 细节:-- 不同的数据类型是无法进行运算的,必须把他们统一为同一种类型才可以运算。

    class Demo {
        public static void main(String[] args){
            byte a = 10;
            short s = 20;
            //byte b = a + s;  //编译报错  因为 a+s的结果是 int类型
            byte b = (byte) (a + s) ;
            System.out.println(b);
        }
    }

    2:比 int 大的数据类型 进行运算的时候, 小范围数据类型 会自动转到大范围数据类型去。

    public class Demo9 {
        public static void main(String[] args) {
            long lo = 100L;
            double d = 3.14;
            //int a = lo +d; // 编译报错  long和double运算  long会自动转double
            double dou = lo +d;
            System.out.println(dou);
    ​
            long lon = (long) (lo + d);
            System.out.println(lon);
        }
    }

1.2 强制类型转换

规则: 从大范围的数据类型 只能强制转到 小范围的数据类型

  • 情况1: 转过去 数据就发生改变。 意义不大

            int a = 200;
            byte b = (byte)a;  // 强制类型转换
            System.out.println(b); // -56
  • 情况2: 转过去之后 数据不发生改变

            int c = 100;
            byte d = (byte)c; // 意义所在
            System.out.println(d); //100
  • 情况3: 小数转整数

            double dou = 3.14;
            int i = (int)dou; //意义所在
            System.out.println(i);//3 

1.3 注意事项

  • boolean类型 不参与任何的类型转换

  boolean b = true;
  int c = b; //编译报错 
  int a = (int)b; //编译报错
  System.out.println(a);
  • 常量优化机制。基本类型中 只有比int小的数据类型 才有常量优化机制

    public class Demo11 {
        public static void main(String[] args) {
            System.out.println(100); // 默认是 int 类型 4个字节。
    ​
            byte b = 100; // 正确的。 100虽然是int的 但是他是一个常量数据。  常量优化机制 
                //底层 其实是这样的 byte b = (byte)100;
    ​
            int a = 100;
            //byte c = a;  //因为a是变量  只有常量才有 常量优化机制。
    ​
    ​
            byte d = 80 + 20;  //正确的  常量优化
                // 常量的运算 在编译成class文件的时候,  就已经把 80+20  变成了100 
                // 也就是说 等这句话 编译到了class文件的时候 就变成了 byte d = 100;  就又符合常量优化机制了。
    ​
            byte e = 80;
            //byte f = e+20; //  编译报错  e是变量
    ​
            // 以上的特点 ---演示的都是 比int小的 基本类型常量。
            // 在基本类型里面 只有 比int小的数据 才遵循常量优化机制。  比int大的没有。
    ​
            System.out.println(3.14); // 默认是double类型
    ​
            //float flo = 3.14;  // 编译报错 double转float 报错。    比int大的没有常量优化机制。
    ​
            // 所以我们为了在 一个 小数常量的时候  告诉jvm  我这个小数常量 不再是默认是 double类型了 所以 我们就在小数后面加一个 F
            System.out.println(3.14F);  // 是float类型
    ​
            float flo = 3.14F;
    ​
            System.out.println(b);
        }
    }
    ​
  • long类型数据后面 为什么要加L

    public class Demo12 {
        public static void main(String[] args) {
            //int a = 100;
            //long lo = a;
            //System.out.println(lo);
    ​
            long lo = 100;
            System.out.println(lo);
    ​
            System.out.println(10000); //默认是int类型     int类型的范围 21亿
    ​
            //System.out.println(10000000000); //100亿
            // 所以 我们此时 就想 写一个 比21亿大的数据
            // 你需要告诉jvm  我现在写的这个数 不再是 int类型的  而是long类型     你怎么告诉jvm  你只需要在后面加一个 L 就告诉他了。
    ​
            System.out.println(10000000000L);
        }
    }   
    ​
2 运算符

2.1 算术运算符: + - * / %

public class Demo13 {
    public static void main(String[] args) {
        System.out.println(10+10); // 加法
        System.out.println(+10); // 正号 
​
​
        System.out.println(10-10); // 0
        System.out.println(-10); // -10
​
        System.out.println(10*10); //100
​
        System.out.println(100/5); // 20
​
        //除法的注意事项
​
        System.out.println(10/4); // 2
        
        System.out.println(10 / 3); // 3
        System.out.println(10 / 3.0); // 3.33333333
        System.out.println(10.0 / 3); // 3.33333333
        System.out.println(10.0 / 3.0);// 3.33333333
        // 为什么这样啊??
        // 用类型转换来解释  不同的数据类型是无法进行运算的,必须把他们统一为同一种类型才可以运算。
​
        // 取余数
        // 10 / 3 = 3   -----   1
​
        System.out.println(10 % 3); // 1
        System.out.println(-10 % 3); // -1
            // -10 / 3 = -3   ---  -1 
        System.out.println(10 % -3); // 1
            //  10 / -3 = -3  ---  1
        System.out.println(-10 % -3); // -1
        // 结论: 取余数 最终结果的符号  取决于 % 左侧的数据的符号。
        // 为什么??
    }
}

题目练习1:

键盘录入一个数值 (只能是3位数) 进行拆分 并打印出每一位数

int a = 键盘录入; //345 ​ 控制台打印如下: ​ 3 ​ 4 ​ 5

Scanner sc = new Scanner(System.in);
​
int a = sc.nextInt();   // 345
​
// 345 % 10    ---- 5
// 345 /10  ---  34 %10  ---4
// 345 /10 /10    3%10  ---3
​
System.out.println(a/10/10%10);
System.out.println(a/10%10);
System.out.println(a%10);

字符的加法

System.out.println('a' + 0); // ??
                // char + int
                //   |
                // int  + int   --- 结果int

码表:记录了 数字和字母的一一对应关系, 因为计算机只能存储数字。

'0' -- 48 'A' -- 65 'a' -- 9

System.out.println(true + 0); //编译报错 
             // boolean + int
             //  |
             //  int   + int    因为boolean不参与任何的类型转换 所以boolean是无法转为 int的

字符串连接符

System.out.println("a" + 0 ); //a0  
            //   String + int
            //   任何的其他类型 和 String 进行+ , 其他类型 全部 转为 String 再+。
            //   0 -> "0"  true ->"true"
            //   String + String
            //   "a" + "0"
            //   字符串的+  是连接符 链接在一起。
            //   "a0"
​
System.out.println(10+20+"a"); //30a
                //  30 + "a"
                //  30a
​
System.out.println("a"+10+20); //a1020
                // "a10" + 20
                // "a1020"
​
int a = 10;
System.out.println(a); //10
System.out.println("a" + a); //a10

题目练习2:

键盘录入 两个数 分别用a和b接收 ​ int a = 键盘录入1; // 4 ​ int b = 键盘录入2; //2 ​ 打印 a和b加的过程和结果

和窗口打印的结果是如下: ​ 4 + 2 = 6

import java.util.Scanner;
public class Demo16 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
​
        int a = sc.nextInt(); //4
        int b = sc.nextInt(); //2
        
        //System.out.println("4 + 2 = "+ (a+b) );
        //System.out.println("a + b = "+ (a+b) );
        System.out.println(a + " + b = "+ (a+b) );
​
        System.out.println(a + " + " + b + " = "+ (a+b) );
                        // 4 + " + " + 2 + " = "+ 6
                        // "4+" + 2 + " = "+ 6
                        // "4+2"+ " = "+ 6
                        // "4+2=" + 6
                        // "4+2=6"
    }
}

表达式概念

把数据通过运算符连接起来的式子就叫做 表达式。

public class Demo18 {
    public static void main(String[] args) {
        //表达式概念:  把数据通过运算符连接起来的式子就叫做 表达式。
            // 表达式 肯定都会有一个结果。
            // 表达式 一般情况下 都是不能单独成一条语句 
        int a = 10;
        int b = 20;
        //a+b; //编译报错
        System.out.println(a+b);
        int c = a+b;
        System.out.println(c);
        
        int d = a+b*b+a;
        System.out.println(d); //420
​
        int e = 10;
        int f =  e+=1 ;
        System.out.println(e); //11
        System.out.println(f); //11
    }
}

自增自减运算符 ++ --

//自增自减运算符 ++ --
// 用在变量自身的。  ++就是自身加1   --就是自身减1
​
int a = 10;
a++;
System.out.println(a); // 11
​
int b = 10;
++b;
System.out.println(b); //11
​
// 结论1 不管++ 放在变量的前面 还是放在变量的后面   这个变量经过++之后  自身就会+1
​
​
int c = 10;
int d = c++;
//int d = (c+=1) -1;
System.out.println(c); // 11
System.out.println(d); // 10
​
// 结论2  当++放在变量后面的时候   c++ 这个整体表达式的结果  取的是 c还没有加1的那个值。
​
int e = 10;
int f = ++e;
//int f = e+=1;
System.out.println(e); // 11
System.out.println(f); // 11
​
// 结论3  当++放在变量前面的时候  ++e 这个整体表达式的结果  取的是 e加1之后的值。

题目练习3:

int a = 10;
int b = 20;
int c = a++  +  ++b;  
System.out.println(a);   
System.out.println(b);  
System.out.println(c);  

题目练习4

int a = 10;
int b = 20;
int c = 30;
int d = 40;
int e = a++ + --b - --c + d-- * ++a + --b;  
System.out.println(e);  

2.2 赋值运算符

基本赋值运算符 =

int a = 10;

复合赋值运算符 += -= *= /= %=

int a = 10;
a+=5;   // a 先和右边的 5进行相加   结果 赋值给 左边的a
System.out.println(a); // 15    

注意事项:复合赋值运算符 有强制类型转换的动作。

public class Demo17 {
    public static void main(String[] args) {
        
        
        byte b = 10;
        b += 10; // 正确 因为有强制类型转换 在里面 
        System.out.println(b); //20 
        
    }
}

2.3 比较运算符 > < >= <= == !=

// 比较运算符的结果 都是boolean类型  true false
System.out.println(5 > 4);  //true
System.out.println(5 < 4);  //false
​
System.out.println(5 >= 4); //true
System.out.println(5 >= 5); //true 
​
System.out.println(5==5); // true
System.out.println(5==4); //false
​
System.out.println(7 != 8); //true
System.out.println(7 != 7); //false

2.4 逻辑运算符

// 逻辑运算符  只用来计算 boolean类型 
​
// &  并且      两瓶酒  一瓶是真的 一瓶是假的 
System.out.println(true & false );
System.out.println(false & true );
System.out.println(false & false );
System.out.println(true & true ); //true
//应用
//int a = sc.nextInt();
//System.out.println(a>0 & a<100); //只有a是0-100范围内的时候才是true 其他都是false
​
System.out.println("-----------------------");
​
// |  或者     两者选一   一瓶是真的 一瓶是假的  
System.out.println(true | true );
System.out.println(true | false ); 
System.out.println(false | false ); //false
//应用
//int a = sc.nextInt();
//System.out.println(a<0 | a>100); //a是负数  和 大于100的数 都是 true  0-100之间的都是false
​
System.out.println("-----------------------");
​
// !  取反    不是真 那就是假
System.out.println( ! true); //false
​
System.out.println("-------------------");
// ^  异或    异  不同   惑 疑惑 
​
System.out.println(true ^ true);  //false 
System.out.println(true ^ false); //true
System.out.println(false ^ false); //false
​
​
//System.out.println("a" ^ "b"); //编译报错 
System.out.println("a" != "b"); //true
System.out.println(3 != 4); //true
System.out.println(true != false);  //true

短路逻辑运算符: && || ​ && 并且 只不过 只要看到第一个是false 后面再有多少个 也不执行了。 ​ || 或者 只不过 只要看到第一个是 true 后面在也不看了。

int a = 10;          
System.out.println(4>5 & a++>0 ); 
System.out.println(a); //11
​
int b = 10;          
System.out.println(4>5 && b++>0 ); 
System.out.println(b); //10
​
int c = 10
System.out.println(6 >5 || c++>0 );  //true
System.out.println(c); //10

2.5 三元运算符

boolean类型数据 ? 值1 : 值2;

public class Demo25 {
    public static void main(String[] args) {
        //boolean类型数据 ? 值1 : 值2;
​
        int a =   true ? 10 : 20;
        System.out.println(a);
        
        //请用户键盘录入 1或者0  如果用户录入1 代表 确认   如果用户 录入2 代表 取消。
        //int a = 键盘录入;
        System.out.println( a == 1 ? "确认" : "取消" );
​
        //int c = 键盘录入;
        //int d = 键盘录入;
        int c = 10;
        int d = 20;
        
        int e = c > d ? c : d;
        System.out.println(e); //20
​
        //int f = c > d ? c+d : c-d;
        //System.out.println(f); //
​
        int m = 10;
        int n = 20;
        int p = 30;
​
        //求三个数的最大值。
        int temp = m>n ? m :n;
        int max = temp >p  ? temp : p;
        System.out.println(max); //30
​
        // 合起来
        int max1 = m > n ? (m>p?m:p) : (n>p?n:p);
        System.out.println(max1);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号