Java笔记2

Java笔记2,第1张

Java笔记2

目录

一、四种进制

1.十进制

2.二进制

3.八进制

4.十六进制

二、正负

1.表示方式

2.原码、反码与补码

三、JAVA使用的字符集

1.转义字符

四、基本数据类型转换

1.自动类型转换(隐式类型转换)

①把存储范围小的量赋给存储范围大的变量

②当存储范围小的数据类型与存储范围大的数据类型混合运算,会按照范围大的计算

③当byte、short、char数据类型进行算术运算,按照int处理

2.强制类型转换

①把存储范围大的值赋给存储范围小的值,可能会损失精度或溢出

②boolean类型不参与转换

③当某个值想要提升数据类型时,也可以使用强制类型转换

3.特殊的数据类型转换

①任意数据类型与String类型数据进行“+”运算时

②String类型不能通过强制类型转换转化为其他类型

五、运算符

1.算术运算符

2.赋值运算符  =

3.比较运算符

4.逻辑运算符

5.位运算符(二进制)

6.三元运算符

六、流程控制

1.顺序结构

        使用scanner对象从控制台读取数据

        import java.util.Scanner;

2.分支结构

①if语句

②if…else语句

③if…else if…else语句

④if…else嵌套

⑤switch…case语句

3.循环结构

①for循环

1~100偶数求和

②whil循环

③do…while循环


一、四种进制 1.十进制

        正常表示

System.out.println(10);
2.二进制

        0b或0B开头

System.out.println(0b10);
3.八进制

        0开头

System.out.println(010);
4.十六进制

        0x或0X开头

System.out.println(0x10);
二、正负

1byte=8bit

1.表示方式

用最高位数字表示正负,0为正数,1为负数

负数:1000 0001   -1          1000 0000    -128

正数:0000 0000    0           0111 1111     127

2.原码、反码与补码

正数的原码,反码,补码相同

负数:

        原码:转化为二进制,最高位取1

        反码:除最高位,其余位取反

        补码:反码+1

三、JAVA使用的字符集

Unicode字符集

1.转义字符 nrt\"'b换行回车键Tab键键"键'键删除键 四、基本数据类型转换 1.自动类型转换(隐式类型转换)

将取值范围小的类型自动提升为取值范围大的数据类型

        取值范围从小到大

                byte ①把存储范围小的量赋给存储范围大的变量

public class Translation{
    public static void main(String [] args){
        double d = 10;
        byte b = 130;//损坏 byte∈[-128,127]
        long num = 12345;
        long bigNum = 12345678912L;//右边超过int范围要加L
    }
}
②当存储范围小的数据类型与存储范围大的数据类型混合运算,会按照范围大的计算 ③当byte、short、char数据类型进行算术运算,按照int处理 2.强制类型转换

        格式:数据类型  变量名 = (数据类型)被强制转换的数据

①把存储范围大的值赋给存储范围小的值,可能会损失精度或溢出
public class Date{
    public static void main{

        int i = (int)3.14;
        double d = 1.2;
        int num = (int)d;//损失精度
    }
}
②boolean类型不参与转换 ③当某个值想要提升数据类型时,也可以使用强制类型转换
public class Date{
    public static void main{

        int i = 1;
        int d = 2;
        double shang = (double)i/j;//无风险
    }
}

​
3.特殊的数据类型转换 ①任意数据类型与String类型数据进行“+”运算时

        输出结果一定是String类型(其他类型在前先按其他类型运算方式计算)

public class Translation{

    public static void main(String [] args){

        
        System.out.println("" + 1 + 2);//12
        System.out.println(5 + 10 + "abc");//15abc

    }
}

可以通过""+……将其他类型的数据转化为String类型

②String类型不能通过强制类型转换转化为其他类型 五、运算符 1.算术运算符 +-*/%++--正/加/字符串连接负/减乘除(取整)取余(取模)自增自减

除数不能为0

如果不能整除,会自动舍弃小数部分

结果的正负与被模数正负一致,结果可能是小数

++在前,先运算后取值

a=2;b=++a

a是3,b是3

++在后先取值后运算

a=2;b=a++

a是3,b是2

--在前,先运算后取值

a=2;b=--a

a是1,b是1

--在后,先取值后运算

a=2;b=a--

a是1,b是2

2.赋值运算符  =

运算方向:从右到左

例:n += (n++) + (++n)

public class Give{
    public static void main(String[] args){ 

        int n = 10;
        n += (n++) + (++n);


        // 实际运行的结果是32
        System.out.println(n);
    }
}
​

借助字节码文件的分析:javap -c Give.class

public class Give {
    public static void main(String[] args){

        //short s = 2;
        //①,错误:不兼容的类型,从int转换为short可能会有损失
        //原因:byte、short、char做数学运算时就自动转换为int类型
        //s+2是int类型
        //s = s + 2;

        //②,编译通过,说明+=有自动的类型转换
        

        

        
        int n=10;

        
        n += (n++) + (++n);

        System.out.println(n);
    }
}

除+=还有-=、*=、/=、%=

3.比较运算符

        最终返回布尔值true/false

==!=<><=>=instanceof是否等于是否不等于是否小于是否大于是否小于等于是否大于等于

是否是类的对象

public class Compare{
    
    public static void main(String[] args){

        System.out.println(5 == 6);

        System.out.println("Hello" instanceof String);

        boolean b1 = false;

        if(b1 == true){
            System.out.println("结果是真的");
        }else{
            System.out.println("结果为假");
        }
    }
}
4.逻辑运算符 &&&|||!^逻辑与短路与逻辑或短路或取反异或

前面即使判断出结果,后面还会执行

有短路效果

只要前面的表达式为false,整体就是false,后面不执行

前面即使判断出结果,后面还会执行

带短路效果

只要前面的表达式为true,整体就是true,后面不执行

相同为false

不同为true

5.位运算符(二进制) 符号含义规则例子<<左移空位补0,被移除的高位丢弃,空缺位补03<<2        12>>右移

当最高位是0,右移后,空缺位补0

当最高位是1,右移后,空缺位补1

4>>1        2>>>无符号右移被移位二进制最高位无论是0或者是1,空缺位都用0补3>>>1        1&按位与二进制位进行&运算,只有1&1时结果是1,否则是06&3        2|按位或二进制位进行 | 运算,只有0 | 0时结果是0,否则是16|3        7^按位异或二进制位相同是0,二进制位不同是16^3        5~按补码取反~6        -7 6.三元运算符

        格式:(条件表达式)?表达式1:表达式2;

true,结果为表达式1

false,结果为表达式2

public class Give{
    public static void main(String[] args){
        int i = 30;
        int j = 20;
        String result = (i>j)?"i比j大":"i比j小";
    }
}
六、流程控制 1.顺序结构         使用scanner对象从控制台读取数据

导入scanner类

        import java.util.Scanner;
// 导入Scanner类
import java.util.Scanner;
​
public class Demo16Scanner {
    
    public static void main(String[] args){
        
        // 1.创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        
        // 2.读取int类型数据
        System.out.print("请输入一个整数:");
        
        // 调用scanner对象的nextInt()方法
        int age = scanner.nextInt();
        
        System.out.println("age="+age);
        
        // 3.读取boolean类型数据
        System.out.print("请输入一个布尔值:");
        boolean flag = scanner.nextBoolean();
        
        System.out.println("flag="+flag);
        
        // 4.读取字符串
        System.out.print("请输入一个字符串:");
        
        // next()方法会因为空格而终止读取
        String strValue = scanner.next();
        System.out.println("strValue="+strValue);
        
        // 建议使用:
        // nextLine()方法不会因为空格而终止读取
        strValue = scanner.nextLine();
        System.out.println("strValue="+strValue);
        
    }
    
}
2.分支结构 ①if语句
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);

public class If{
​    public static void main(String[] args){
        System.out.print("请输入i:");
        int i = scanner.nextInt();
​
        System.out.print("请输入j:");
        int j = scanner.nextInt();
​
        // 测试使用单独的if语句
        // 当if(判断条件)为true时执行{}中的语句
        if (i > j){
        System.out.println("i 比 j 大");
    }
​
}
如果if语句块中只有一条语句,可以省略{}
import java.util.Scanner;

public class If{
	
	public static void main(String[] args){
		
		//创建scanner对象
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("请输入i:");
		int i = scanner.nextInt();
		
		System.out.print("请输入j:");
		int j = scanner.nextInt();
		
		//省略{}
		if (i < j)
            System.out.println("i 比 j 小");
		
		System.out.println("后续操作");
	}
}

对于布尔值

import java.util.Scanner;

public class If{
	
	public static void main(String[] args){
		
		// 读取一个布尔值
        System.out.print("请输入flag:");
        boolean flag = scanner.nextBoolean();
​
        // 没有必要写flag == true
        if (flag) {
            System.out.println("flag是真的");
        }
	}
}
②if…else语句 ③if…else if…else语句 ④if…else嵌套
import java.util.Scanner;

public class If{
	
	public static void main(String[] args){
		
		//创建scanner对象
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("请输入i:");
        int i = scanner.nextInt();
​
        System.out.print("请输入j:");
        int j = scanner.nextInt();
​
        if (i > j){                             // 执行条件判断①
            System.out.println("i 比 j 大");  // ①为true时执行
        } else if (i < j) {                     // ①为false继续执行下一个条件判断②
            System.out.println("i 比 j 小");  // ②为true时执行
        } else {                                
            System.out.println("i 和 j 相等"); // ②为false时执行
    
        // 嵌套在其他if...else结构内的if
            if (m > n){
                System.out.println("m 比 n 大");
            }
        }
​
	}
}
⑤switch…case语句

switch可选值:

        byte、short、int、char、枚举、String

case:

        子句中指定值必须是常量且互不相同

default:

        当case都不满足,则执行default分支

        位置灵活

        可写可不写

break:

        跳出循环

import java.util.Scanner;
​
public class Demo18SwitchCase {
    
    public static void main(String[] args){
        
        // 创建Scanner对象
        Scanner scanner = new Scanner(System.in);
​
        System.out.print("请输入季节:");
        String season = scanner.nextLine();
        
        // 使用season变量的值和后面的case依次进行比较
        // 遇到一个满足条件的case,那么后面的都会被执行,包括default分支
        // 除非在某个case中使用了break关键字,停止了case的执行。
        switch(season){
            case "spring":
                System.out.println("我喜欢春天");
                
                break ;
            case "summer":
                System.out.println("我喜欢夏天");
                
                break ;
            case "autumn":
                System.out.println("我喜欢秋天");
                
                break ;
            case "winter":
                System.out.println("我喜欢冬天");
                
                break ;
                
            // 当前面每一个case都不匹配时执行default分支(默认分支)
            default:
                System.out.println("我喜欢梅雨季节");
        }
        
    }
    
}
3.循环结构 ①for循环

判断条件必须是布尔类型,当结果为false时循环结束

for(声明变量;循环过程中判断条件;变量循环累加){

        表达式;

};

打印十次Hello

public class For{
    public static void main(String[] args){
        for(int i = 0;i < 10;i++){
            System.out.println("Hello");
        };
    }
}
1~100偶数求和
public class Count{
    public static void main(String[] args){
		
		int sum = 0;
		
        for(int i = 0;i < 100;i++){
            
			if(i % 2 == 0){
				sum += i;
			};
        };
		
		System.out.println(sum);
    }
}
②whil循环

        while(判断条件){

                循环体;

        };

        表达式;

例:世界最高山峰是珠穆朗玛峰,它的高度是8844.43米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

public class Mount{
	
	public static void main(String[] args){
		double h1 = 88444300;
		double h2 = 1.0;
		
		//声明一个变量用于统计折叠次数
		int count = 0;
		
		//声明一个变量用来保存折叠后的厚度
		double thick = h2;
		
		while(thick <= h1){
			
			//折一次厚度翻倍
			thick *= 2;
			
			//折叠次数加一
			count++;
		}
		
		System.out.println("最终纸的厚度为" + thick);
		System.out.println("最终折叠次数为" + count);
	}


}
③do…while循环

        do{

                循环体

        }while(判断条件);

        表达式;

例:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。

import java.util.Scanner;

public class Number{
	public static void main(String[] args){
		
		Scanner scanner = new Scanner(System.in);
		
		//输入整数
		System.out.print("请用户输入整数:");
		int a = scanner.nextInt();
		
		//声明一个变量来保存正数的个数
		int count1 = 0;
		
		//声明一个变量来保存负数的个数
		int count2 = 0;
		
		do{
			
			if(a > 0){
				count1++;
				
			}
			if(a < 0){
				count2++;
				
			}
			
			System.out.println("正数的个数是" + count1);
			System.out.println("负数的个数是" + count2);
			
			System.out.print("请用户输入整数:");
			a = scanner.nextInt();
		}while(a != 0);
		
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5716288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存