• JavaSE(三) 变量与运算符


    个人博客网:https://wushaopei.github.io/    (你想要这里多有)

    2 量的使用

    2.1按数据类型分类

    1.       整型 : byte(1字节 = 8bit) short(2字节) int(4字节) long(8字节)
    2.       浮点型 : float(4字节) double(8字节)
    3.       字符型 : char(2字节)
    4.       布尔型 : boolean

    public class VarTest2{ public static void main(String[] args){ //整型 byte short int long byte b = 127; //表数范围 -128 ~ 127 long l = 123789L; //long类型常量后面需要加"l"或者"L",注意一般加大L //浮点型 float double float f = 12.3f; //float类型常量后面需要加"f"或"F" double d = 12.9; double d2 = .5; // .5 等于 0.5 //字符型 char char c = 'a'; c = '中'; c = 'ふ'; c = ' '; //c = 'ab'; //只能存放一个字符 c = 'u0096'; System.out.print("aaaaaaaaaaaa"); System.out.print(c); System.out.print("bbbbbbbbbbbb"); //布尔型 :只有两个值 true 或 false boolean boo = false; System.out.println(boo); System.out.println("-----------------------默认常量--------------------"); //java的整型常量默认为 int 型 byte n = 15; //底层对15进行了强制类型转换所以可以直接赋值 long n2 = 123564654654654564L; //Java 的浮点型常量默认为double型 float num1 = 12.3f; } }

    2.2定义变量的格式:

    格式: 变量的类型  变量名 = 变量值

    例:

    //声明一个变量并赋值
    		int number = 20;
    		//声明一个变量
    		int number2;
    		//给变量赋值
    		number2 = 30;
    		System.out.println(number2);
    		//变量可以被多次赋值后一次赋值覆盖前一次的值
    		number2 = 50;
    		//int number2 = 100; 编译错误 - 同一作用域内的变量名不可重复
    		int a,b,c; //同时声明了三个变量
    		a = b = c = 10; //同时给三个变量赋值
    		int aa = 10,bb = 20,cc = 30;

    2.3变量使用的注意点:

    ①先声明再使用

    ②作用域 :声明它的那对大括号内

    ③在同一个作用域中变量名不能相同

    ④变量可以被多次赋值,后一次赋值覆盖前一次的值

    3变量间的运算

    3.1基本数据型间运算

      一 基本数据类型之间的运算(7种 不包括(boolean))

    1. 自动类型提升:小容量和大容量的变量作运算,用大容量的类型来接收数据。
    •       byte,short,char -> int -> long -> float -> double
    public class VarTest3{
    
    	public static void main(String[] args){
    	
    		//思考?两个不同的类型做运算,结果用什么接收。
    
    		short s = 123;
    		int a = 100;
    		a = a + s; //short和int做运算-使用int类型变量来接收
    
    		float f = 12.3f; //float - 4字节
    		long ll = 123L; //long - 8字节
    		f = f + ll;
    
    
    		System.out.println("--------------------------");
    		//注意 : byte short char三者之间做运算先提升为int类型
    		byte number = 100;
    		short number2 = 200;
    		int number3 = number + number2;
    
    		char c = 'a';
    		int aa = 1;
    		number3 = c + aa;
    
    		System.out.println(number3);
    	}
    }

       2.强制类型转换:自动类型提升的逆过程。

    public class VarTest4{
    
    	public static void main(String[] args){
    	
    		/*
    			强制类型可能会损失精度
    		*/
    		int a = 128;
    		byte b = (byte)a;
    		System.out.println(b);
    
    		double d = 12.5;
    		int a2 = (int)d;
    		System.out.println(a2);
    
    		System.out.println("---------------------------");
    
    		int a3 = 12;
    		byte b2 = (byte)a3;
    		System.out.println(b2);
    
    		System.out.println("---------------------------");
    
    		int a4 = 1000;
    		long ll2 = (long)a4;
    		System.out.println(ll2);
    	}
    }

    注意:

      ①容量指是变量的表数范围

      ②byte,short,char三者之间做算先自提升为int类

    3.2 String基本数据类型(8种)间运算

    符串的赋值方式:

    public class VarTest5{
    
    	public static void main(String[] args){
    	
    		//String类型的声明和赋值方式
    		String str = "hello java"; 
    
    		String str2 = new String("aaaa"); //这种方式先了解即可
    
    		System.out.println(str);
    		System.out.println(str2);
    
    		System.out.println("--------------------------------------");
    
    		int a = 10;
    		String str3 = str + a;
    		System.out.println(str3);
    
    		boolean boo = true;
    		String str4 = str + boo;
    		System.out.println(str4);
    
    		System.out.println("--------------------------------------------");
    
    		int number = 12;
    		char c = 'a';
    		String str5 = "cangjie";
    
    		System.out.println(str5 + number + c); // cangjie12a
    		System.out.println(number + c + str5); //109cangjie
    		System.out.println(str5 + (number + c)); //cangjie109
    		System.out.println(number  + str5 + c); //12cangjiea
    
    		System.out.println("--------------------------------------------");
    
    		float ff = 12.5f;
    		String str11 = ff + "";
    		System.out.println(str11);
    
    	}
    }

    明:

    1.String与基本数据类型间只能做连接运算

    2.String与基本数据类型做运算结果只能是String

    4、进

    4.1进制的表示

    二进制:以0b或0B开头 。比如:0b10

    八进制:以0开头.比如010

    十六进制:以0x或0X开头。比如0x10

    4.2二

    ①所有数字在计算机的底层都是以什么方式存在?进制

    ②计算机以什么样的形式保存所有的整数?

    什么是原码,反码,补码?

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

    2、负数的

    • 原码:直接将一个数值换成二进制数。最高位是符号位
    • 反码:除符号位外,将原码取反(0变1,1变0)
    • 补码:在反码的基础上加1
    public class JinZhiTest{
    
    	public static void main(String[] args){
    	
    		int a = 0B10;
    
    		a = 010;
    
    		a = 0x10;
    
    		System.out.println(a);
    	}
    }

    5、运算符

    算术运算符

    说明:

    1. 前++后++前区别是什么?
    • 前++ :先自增1,后赋值
    • 后++ :先赋值,再自增1
    • 前-- :先自减1,后赋值
    • 后-- :先赋值,再自减1
    • 代码:

      	//除 
      		int number = 10;
      		int number2 = 4;
      		int number3 = number / number2; //2
      
      		double number4 = number / number2; //2.0
      
      		number4 = (number + 0.0) / number2; //2.5
      
      		number4 = (double)number / number2; //2.5
      
      		number4 = (double)(number / number2); //2.0
      
      //使用场景 : 判断是否可以整除。 比如  x % 5 == 0 如果条件满足那么就可以整除
      		System.out.println(0 % 2); //0
      		System.out.println(1 % 2); //1
      		System.out.println(2 % 2); //0
      		System.out.println(3 % 2); //1
      		System.out.println(4 % 2); //0
      		System.out.println(5 % 2); //1
      		System.out.println(6 % 2); //0
      
      		System.out.println("-------------------------------------------");
      		//思考?取模结果的正负和什么有关? 和被模数有关。被模数是正的结果就为正,被模数是负的结果就为负
      		System.out.println(-3 % 2); // -1
      		System.out.println(3 % -2); //1
      		System.out.println(-3 % -2); //-1

    赋值运算符

    相关面试题:

    ①编译不通过,因为short类型变量运算符时会先自动类型提升为int类型

    ②编译可以通过,不会改变原来的数据类型

    比较运算符(关系运算符)

    说明:结果都是boolean类型

    逻辑运算符

    说明:

    1.逻辑与和短路与。当运算符的两边有一个为false结果就为false

     2.逻辑或和短路或。当运算符的两边有一个为true结果就为true

     3.逻辑非。取反。(如果a的值为true结果为false.如果a的值为false结果为true)

     4.逻辑异或。当运算符的两边值相同结果为false.两边的值不同结果为true

      特点 :

    1.逻辑运算符是对boolean类型进行运算的

    2.逻辑运算符的结果为boolean类型

    位运算符

    说明:

    >> (右移):  在一定范围内,每向右移一位。原来的数除以2

    << (左移) : 在一定范围内,每向左移一位。原来的数乘以2

    >> : 如果是正数最高位用0补,如果是负数最高位用1补

    >>> (无符号右移) :

    三元运算符

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

    1.条件表达式的结果只能是boolean类型。如果结果为true返回的结果为表达式1.否则结果为表达式2.

    2.三元素运算符可以嵌套使用,但是不建议。

    3.表达式1和表达式2的类型要保持一致

        //需求?求三个数中的最大值
    		int aa,bb,cc;
    		aa = 10;
    		bb = 20;
    		cc = 30;
    	
    		int maxNumber = (aa > bb)? aa : bb;
    		maxNumber = (maxNumber > cc)? maxNumber : cc;
    		System.out.println(maxNumber);

    代码 :

    6、数据的交换

    
    public class Demo {         
    public static void main(String[] args) {
    	
    	//方式一 : 
    		/*
    			优点:容易理解。基本数据类型和引用数据类型都可以采用如下方式
    			缺点:多创建一个变量。占用了内存。
    		*/
    		
    		int temp = a;
    		a = b;
    		b = temp;
    		
    
    		//方式二:
    		
    		/*优点 : 效率高
    			缺点 :可能会造成精度损失(溢出),只能用于(基本数据类型)数值
    		*/
    		
    		a = a + b; // a = (a + b)
    
            b = a - b; // b = (a + b) - b;
    
    		a = a - b; // a = (a + b) - b(a);
    		
    
    		//方式三
    		a = a ^ b; //a (k) = a ^ b
    		b = a ^ b; //  k(a ^ b) ^ b
    		a = a ^ b; // k(a ^ b(a)) ^ b
    		System.out.println("a=" + a + " b=" + b);
    	}
    
    }
    
    J
  • 相关阅读:
    内存管理工具
    c语言目录操作总结
    重写strstr、strcpy、memcpy、memset、atof算法
    统计编码量工具
    hdu4348
    bzoj4358: permu
    bzoj2658: [Zjoi2012]小蓝的好友(mrx)
    bzoj2657: [Zjoi2012]旅游(journey)
    bzoj3583: 杰杰的女性朋友
    bzoj3673 bzoj3674可持久化并查集
  • 原文地址:https://www.cnblogs.com/wushaopei/p/11711898.html
Copyright © 2020-2023  润新知