zoukankan      html  css  js  c++  java
  • Day2 数据类型和运算符

    基本数据类型

    Java 是一种强类型的语言,声明变量时必须指明数据类型。变量(variable)的值占据一定的内存空间。不同类型的变量占据不同的大小。
    Java中共有8种基本数据类型,包括4 种整型、2 种浮点型、1 种字符型、1 种布尔型,请见下表。

    Java基本数据类型

    数据类型 说明 所占内存 举例 备注
    byte 字节型 1 byte 3,127  
    short 短整型 2 bytes 3,32767  
    int 整型 4 bytes 3,21474836  
    long 长整型 8 bytes 3L,92233720368L long最后要有一个L字母(大小写无所谓)
    float 单精度浮点型 4 bytes 1.2F, 223.56F float最后最好有一个F字母(大小写无所谓)。
    double 双精度浮点型 8 bytes 1.2,
    1.2D, 223.56, 223.56D
    double最后最好有一个D字母(大小写无所谓)。
    char 字符型 2 bytes 'a','A' 字符型数据只能是一个字符,由单引号包围。
    boolean 布尔型 1 bit true, false  

    Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上, Java中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的例子:

    public class PrimitiveTypeTest {  
        public static void main(String[] args) {  
            // byte  
            System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
            System.out.println("包装类:java.lang.Byte");  
            System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
            System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  
            System.out.println();  
      
            // short  
            System.out.println("基本类型:short 二进制位数:" + Short.SIZE);  
            System.out.println("包装类:java.lang.Short");  
            System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);  
            System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);  
            System.out.println();  
      
            // int  
            System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);  
            System.out.println("包装类:java.lang.Integer");  
            System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);  
            System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);  
            System.out.println();  
      
            // long  
            System.out.println("基本类型:long 二进制位数:" + Long.SIZE);  
            System.out.println("包装类:java.lang.Long");  
            System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);  
            System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);  
            System.out.println();  
      
            // float  
            System.out.println("基本类型:float 二进制位数:" + Float.SIZE);  
            System.out.println("包装类:java.lang.Float");  
            System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);  
            System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);  
            System.out.println();  
      
            // double  
            System.out.println("基本类型:double 二进制位数:" + Double.SIZE);  
            System.out.println("包装类:java.lang.Double");  
            System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);  
            System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);  
            System.out.println();  
      
            // char  
            System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
            System.out.println("包装类:java.lang.Character");  
            // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
            System.out.println("最小值:Character.MIN_VALUE="  
                    + (int) Character.MIN_VALUE);  
            // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
            System.out.println("最大值:Character.MAX_VALUE="  
                    + (int) Character.MAX_VALUE);  
        }  
    }  

    整数型

    整数型包括byte、short、int和long。

    public class Demo1 {
    	public static void main(String[] args) {
    		//字面值 默认是int类型
    		byte n1 = 12;
    		short n2 = 45;
    		int n3 = 456;
    		long n4 = 67L;// L 或 l
            }
    }  

    二进制太长可以使用下划线来进行区分

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

            int n5 = 0B1010_1111_0011_1100;//二进制用0B或0b表示
            int n6 = 017;//八进制用0表示
            int n7 = 0xffff;//十六进制用0x或0X表示
            long n8 = 12345678987654321L;

            }
    }    

    浮点型

    浮点型包括double和float。

    注意:1.不要在数量级相差很大的浮点类型之间进行运算。2.避免进行等量的判断

    import java.math.*;
    public class Demo1 {
    	public static void main(String[] args) {
    		float f1 = 34.5f;//f 或 F 默认为 double类型
    		double d1 = 456.78d;//后缀 d 或 D 
    		double d2 = 2.4e20;// e或 E 以 10为底 
    		//浮点型可以表示十六进制,但是必须以科学
    		//计数法表示,而且 以 p为底
    		double d3 = 0x3.4p20;// p或 P以2 
    		double d4 = 2.4e20;
    		double d5 = d4 + 1;
    		double num1 = 0.1;
    		double num2 = 0.2;
    		double num3 = num1 + num2;//0.3
    		//java.lang
    		System.out.println(num3 == 0.3);//不一样  输出结果false
    		System.out.println(num3);//输出结果 0.30000000000000004
    		//处理 java.math包
    		BigDecimal number1 = new BigDecimal("0.1");
    		BigDecimal number2 = new BigDecimal("0.2");
    		System.out.println(number1.add(number2));//输出结果 0.3
    	}
    }

    字符型

    char类型

    • char类型是一个单一的 16 位 Unicode 字符;
    • 最小值是 u0000(即为0);
    • 最大值是 uffff(即为65,535);
    • char 数据类型可以储存任何字符;
    • 例子:char letter = 'A';。

    只能存储一个字符,只能使用单引号

    布尔型

    布尔(boolean)型包括true和false

    引用数据类型

    String

    public class Demo2 {
    	public static void main(String[] args) {
    		String name = "郭靖";
    		String address = "北京";
    		//+  连接字符串
    		System.out.println(name+address);
    		int n1 = 1;
    		int n2 = 1;
    		System.out.println(n1 + n2);//输出结果:2
    		// 2 +"郭靖"-》 “2郭靖”
    		System.out.println(n1+n2+name);//输出结果:2郭靖
    		//"郭靖1"+n2 ->"郭靖11“
    		System.out.println(name+n1+n2);//输出结果:郭靖11
    
    
    	}
    } 

    基本数据类型转换

    自动类型转换

    小-》 大
    低-》 高

    强制类型转换

    大-》小
    高-》低

    语法格式为:(强制转换的数据类型)操作数

    int num = (int)45.67;

    类型提升原则

    前提:运算
    结果:采取高类型(范围大的数据类型作为结果)

    运算符

    分类:根据操作数的个数

    一元

    二元

    三元

    算数运算符

    public class Demo5 {
    	public static void main(String[] args) {
    		
    		System.out.println(5 + 2);//输出结果:7
    		System.out.println(5 - 2);//输出结果:3
    		System.out.println(5 * 2);//输出结果:10
    		//------------除法--------------------------
    		//除数和被除数都是整数结果会取整数部分
    		System.out.println(5 / 2);////输出结果:2
    
    		System.out.println(5.0 / 2);//输出结果:2.5
    		System.out.println(5 / 2.0);//输出结果:2.5
    		System.out.println(5.0 / 2.0);//输出结果:2.5
    		//除数为0 抛出异常
    		//System.out.println(5 / 0);
    		System.out.println(5.0 / 0);//正无穷大  输出结果:Infinity
    		System.out.println(-5.0 / 0);//负无穷大  输出结果:-Infinity
    		//非数字NaN
    		System.out.println(0.0 / 0);//输出结果:NaN
    		//-----------------取余数,取模----------------------------
    		System.out.println( 5 % 2);//输出结果:1
    		System.out.println(5.0 % 2);//输出结果:1.0
    		System.out.println(5 % -2);//输出结果: 1
    		System.out.println(-5 % 2);//输出结果:-1,符号看被除数
    	    //---------------习题讲解--------------------------------
    		/*根据天数(46)计算周数和剩余的天数*/
    		int days = 46;
    		int week = days / 7;//周
    		int day = days % 7;//余数天
    		System.out.println(week+"周,余数"+day+"天");
    
    		//----------------------------------------------
    		/*
    		对于随意输入的一个3位数,
    		反转;例如:234反转后
    		(将每一个数字反转输出即可):432
    		*/
    		int num = 234;
    		int n1,n2,n3;
    		n1 = num % 10;//个位
    		n2 = num / 10 % 10;//十位
    		n3 = num / 100;//百位
    		System.out.println(n1+""+n2+""+n3);//"432"
    		System.out.println(n1*100+n2*10+n3);//432
    
    
    	}
    }

     关系运算符

    逻辑运算符

    && || 短路与和短路或

    位运算符 

    & | 非短路与和非短路或

    5    二进制 00000000-00000000-00000000-00000101       
    
    2    二进制 00000000-00000000-00000000-00000010
    
    //&如果相对应位都是1,则结果为1,否则为0
    5&2  二进制 00000000-00000000-00000000-00000000
    
    //|如果相对应位都是0,则结果为0,否则为1
    5|2  二进制 00000000-00000000-00000000-00000111
    
    //^如果相对应位值相同,则结果为0,否则为1
    5^2  二进制 00000000-00000000-00000000-00000000
    
    //~按位补运算符翻转操作数的每一位,即0变成1,1变成0。
    ~5   二进制 11111111-11111111-11111111-11111010
           减一 11111111-11111111-11111111-11111001
    	   取反 00000000-00000000-00000000-00000110
    	   
    //<<向左移动几位,右边低端位用0补全   
    5<<2 二进制 00000000-00000000-00000000-00010100
    
    //>>向右移动几位,左边高位是什么用什么补位,是1用1,是0用0
    5>>2 二进制 00000000-00000000-00000000-00000001
    
    //>>>无符号右移,左边高位全部用0进行补位
    5>>>2二进制 00000000-00000000-00000000-00000001
    
    -6>>>2二进制 00111111-11111111-11111111-11111110
    

    扩展赋值运算符

    条件运算符

    语法:

    比较运算||Boolean?表达式1:表达式2

    如果?前的结果是true返回表达式1,如果?前返回false返回表达式2

     运算符的优先级

  • 相关阅读:
    STL与泛型编程-练习2-GeekBand
    HashSet
    JAVA集合
    分布式锁1 Java常用技术方案
    JAVA 锁
    JAVA多线程二
    JAVA多线程一
    Redis pipeline and list
    mongo 安装
    Intersection of Two Arrays
  • 原文地址:https://www.cnblogs.com/qingyunzong/p/8032502.html
Copyright © 2011-2022 走看看