• 31.【Java (基础入门操作-----数据类型)】


    (一)、包装类

    1.为什么要包装类?

    (1).首先,Java语言是一个面向对象的语言但是Java中的基本数据类型却是不面向对象的,将每个基本数据类型设计一个对应的类进行代表,这种方式增强了Java面向对象的性质。

    (2).其次,如果仅仅有基本数据类型,那么在实际使用时将存在很多的不便,很多地方都需要使用对象而不是基本数据类型。比如,在集合类中,我们是无法将int 、double等类型放进去的,因为集合的容器要求元素是Object类型。而包装类型的存在使得向集合中传入数值成为可能,包装类的存在弥补了基本数据类型的不足

    (3).此外,包装类还为基本类型添加了属性和方法,丰富了基本类型的操作。如当我们想知道int取值范围的最小值,我们需要通过运算,如下面所示,但是有了包装类,我们可以直接使用Integer.MAX_VALUE即可。

    2.包装类的2种主要用途

    1.java中的数据类型int,double等不是对象,无法通过向上转型获取到Object提供的方法,而像String却可以,只因为String是一个对象而不是一个类型基本数据类型由于这样的特性,导致无法参与转型,泛型,反射等过程。为了弥补这个缺陷,java提供了包装类。

    作为 和基本数据类型对应的类, 包装类存在,方便涉及到对象的操作。

    包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

    3.为什么要保留基本数据类型?

    我们都知道在Java语言中,用new关键字创建的对象是存储在堆里的,我们通过栈中的引用来使用这些对象,所以,对象本身来说是比较消耗资源的。对于经常用到的类型,如int等,如果我们每次使用这种变量的时候都需要new一个对象的话,就会比较笨重了。所以,Java提供了基本数据类型,这种数据的变量不需要使用new在堆上创建,而是直接在栈内存中存储,因此会更加高效

    (二)、Java的基本格式:

    固定格式:

    public class 文件名 
    {
    	public static void main(String []avgs){
    	}
    	
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (三)、Java的输入输出:

    1.输出问题:

     格式:         System.out.println();
    
    • 1
    代码展示:
    public class one
    {
    	public static void main(String []avgs)      //切记是大写
    	{
    		int a=3;
    		//系统 调用输出 调用打印
    		System.out.println("通过电脑屏幕打印出来的数据为:\n");
    		System.out.println(a);
    }
    }       //这里没有分号
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    效果展示:

    在这里插入图片描述

    2.输入问题

         1.     引入工具包: import java.util.Scanner;
    
         2.     声明工具包:Scanner sc=new Scanner(System.in);
         
    	 3.	==========================================================
    		  使用工具包:  i=sc.nextInt();    //输入整形
    	
    		  使用工具包      j=sc.nextFloat();   //输入浮点型
    		  
    		  使用工具包     k=sc.nextDouble();    /输入double型
    		  
    		  使用工具包    s=sc.next();        //输入字符串  String
    		
    		使用工具包     c=sc.next().charAt(0);      //输入字符char
    	4.	以上方法遇到空格 制表符\t 回车.  这些符号后数据就不会被接受了.===================
    
    		使用工具包    s=sc.nextLine()    //接受字符串
    		
    	6.	这个方法只有遇到回车才会结束
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    代码展示:
    //    引入工具包
    import java.util.Scanner;
    
    public class one
    {
    		public static void main(String []avgs)
    		{
    			//声明工具包
    			Scanner sc=new Scanner(System.in);
    			
    			System.out.println("请您输入您要输入一个整形的数据:");
    			
    			int i;
    			//使用工具包
    			i=sc.nextInt();        //仔细看  nextInt();
    			
    			System.out.println(i);
    			
    			float j;
    			System.out.println("请您输入一个浮点型数据:\n");
    			//使用工具包
    			j=sc.nextFloat();      // 仔细看   nextFloat  
    			
    			System.out.println(j);
    			
    			double k;
    			
    			System.out.println("请输入一个double型的数据:\n");
    			//使用工具包
    			k=sc.nextDouble();
    			
    			System.out.println(k);
    			
    			System.out.println("请输入一个字符串:\n");
    			
    			String s;
    			//使用工具包
    			s=sc.next();
    			
    			System.out.println(s);
    			
    			System.out.println("请输入一个字符\n:");
    			
    			char c;
    			//使用工具包
    			c=sc.next().charAt(0);
    			
    			System.out.println(c);
    			
    		}
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    效果展示:

    在这里插入图片描述

    第一套体系:输入的时候用空格分开:
    (因为第一个数据接受了 1和空格,那么内存里面还有一个2,所以自动分配给了第二个接收数据.)

    在这里插入图片描述

    第二套体系:
    遇到空格不会停止,只有遇到回车的时候才有问题

    在这里插入图片描述

    两个体系混用的时候(空格)

    在这里插入图片描述

    两个体系混用,回车

    在这里插入图片描述

    (三)、运算符的规则:

    小空间的转化成大空间的 比如说 1L的水到进4L杯子是可行的.
    运算的取值大小:

    bety

    byte short char 在运算前首先要转换成int .

    (四)、 + 起到链接字符串和运算的作用

    代码展示:
    
    public class one
    {
    	public static void main(String []avgs)
    	{		
    		System.out.println("123"+123);
    		
    		System.out.println(1+2+"黑马程序");
    		
    		System.out.println('a'+3);	
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    效果展示:

    在这里插入图片描述

    (五)、逻辑运算符

    1.逻辑或

      |       一个为真全部为真
    
    • 1

    2.逻辑非

    !     真为假,假为真.
    
    • 1

    3.逻辑且

    &       一个为假全部为假
    
    • 1

    4.逻辑异或

    ^         两边一样为假  两边不一样为真                (民政局)
    
    • 1

    5.短路且

    &&       一个为假全部为假         (区别在于只要第一个是个确定的,
    													第二个我可以不看)
    
    • 1
    • 2

    6.短路或

    ||       一个为真  ,全部为真        (区别在于只要第一个是个确定的,
    													第二个我可以不看)
    
    • 1
    • 2
    代码展示:
    import java.util.Scanner;
    public class one
    {
    	public static void main(String []avgs)
    	{
    		// &    逻辑且  两边同时为真才为真
    		System.out.println(true&true);        
    		System.out.println(true&false);
    		System.out.println(false&false);
    		// |      逻辑或,两边同时为假 才为假
    		System.out.println(true|true);        
    		System.out.println(true|false);      //为真
    		System.out.println(false|false);
    		//  !     逻辑非   假的为真,真的为假.
    		System.out.println(!true);        
    		System.out.println(!false);
    		//^  逻辑异或   相同为false 不相同为true     (民政局)
    		System.out.println(true^true);        
    		System.out.println(true^false);      //为真
    		System.out.println(false^false);
    		//===================================以上不管真假都运行
    		//短路逻辑符	
    		//  &&  短路且         第一个不满足条件直接短路,也就是说第二个直接跳过
    		System.out.println(true&&true);        
    		System.out.println(true&&false);
    		System.out.println(false&&false);
    		System.out.println(false&&true);
    		//||   短路或
    		System.out.println(true||true);        
    		System.out.println(true||false);      //为真
    		System.out.println(false||false);
    		Scanner sc=new Scanner(System.in);
    		int i,j;
    		System.out.println("请您输入两个整数:");
    		i=sc.nextInt();
    		j=sc.nextInt();
    		if(i==6||j==6||i+j==6)
    		{
    			System.out.println(true);
    		}
    		else
    		{
    			System.out.println(false);
    		}		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    效果展示:

    在这里插入图片描述

    (六)、原码、反码、补码(八位)

    0 000000000(二进制)

    1.原码:

    定义 : 十进制的二进制表现形式,最左边是符号位,0为正,1为负

    十进制:56 ---------------- 二进制: 00111000 (原码)【其中左边第一个0,是符号位。其余是数据】
    十进制:-56-------------------二进制: 10111000 (原码)
    55------------------------原码 : 00110111
    -55-------------------------原码: 10110111;

    1.1原码弊端:

    主要作用是只能取正数,不能取负数.。如果进行负数运算,结果就出错。和我们预期的到结果是有区别的.

    2.反码:

    定义:正数的反码是其本身,负数的反码是符号位保持不变,其余位取反 。按位取反

    -56----------反码为: 11000111 (表示)
    都先取反码再运算
    -56+1= 11001000 – ----- (-55的反码为) :11001000

    2.2作用:

    是为了解决源码不能计算负数的问题而出现的

    2.3计算规则

    正数的反码不变.负数的反码在源码的基础上,符号位不变,数值取反,0变1,1变0;

    2.4反码弊端:

    当反码到0的时候,0有两种形式.+0,-0;所以会误差1

    3.补码:

    定义: 目的是为了解决反码的误差决定的。正数的补码是其本身,负数的补码是再其反码的基础上+1;
    在这里插入图片描述

    (七)、隐形转换和强制转换原理

    1个字节 占据 8个比特位 00000000
    4个字节 占据32个比特位

    1.隐式转换: (补齐比特位)

    publci class one
    {
    	public static void main()
    	{
    		bety a=10;   //比特位  0000 1010
    		int b;
    		b=a;  // 0000 0000 0000 0000 0000 0000 0000 1010
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.强制转换 : (删除比特位)

    publci class one
    {
    	public static void main()
    	{
    		int a=10;	// 0000 0000 0000 0000 0000 0000 0000 1010
    		bety b;
    		b=(byte)a;  // ~~0000 0000 0000 0000 0000 0000~~  0000 1010
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3. Java基本数据类型的取值范围:

    在这里插入图片描述

    4.Java的各个基本数据类型的比特位

    在这里插入图片描述

    (八)、其他逻辑运算符

    1.逻辑且计算机运算视角

    原理:两个为真就为1,否则为0;

    publci class one
    {
    	public static void main()
    	{
    		int a=10;	// 0000 0000 0000 0000 0000 0000 0000 1010
    		int b=10;	// 0000 0000 0000 0000 0000 0000 0000 1010
    		//————————————————————————————————————————————————————————
    		System.out.println(a&b);							1 0 1 0
    		//结果为  10
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.逻辑或计算视角

    原理: 一个为真就为1.否则为0

    publci class one
    {
    	public static void main()
    	{
    		int a=10;	// 0000 0000 0000 0000 0000 0000 0000 1010
    		int b=10;	// 0000 0000 0000 0000 0000 0000 0000 1010
    		//————————————————————————————————————————————————————————
    		System.out.println(a|b);							1 0 1 0
    		//结果为  10
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4.左移运算符(左移一位就是原数值*2)<<

    原理: 高位(左)左移,低位补零

    publci class one
    {
    	public static void main()
    	{
    		int a=10;	// 0000 0000 0000 0000 0000 0000 0000 1010
    		System.out.println(a<<2);  //左移2位。~~00~~  00 0000 0000 0000 0000 0000 0000 1010 00
    		也就是40 
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.右移运算符 (右移一位原数值除2)>>

    原理:向右移动,高位补0或1 .符号位要与原数据(符号)保持一致,数据位补0

    publci class one
    {
    	public static void main()
    	{
    		int a=10;	// 0000 0000 0000 0000 0000 0000 0000 1010
    		System.out.println(a>>2);  //右移2位。 00 0000 0000 0000 0000 0000 0000 0000 10 ~~10~~ 
    		也就是2
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5.无符号右移(>>>)

    原理:向右移动,高位只补0.

    在这里插入图片描述
    基础篇第一节 已完毕!!!!!1

  • 相关阅读:
    杠杆炒股尾盘突现急跌的原因是什么?
    IOS不使用默认的mainStroryboard作为首个controller的方法
    【云原生系列第五章】---Serverless架构中如何避免冷启动带来的影响
    【C++】复合类型(数组、字符串、结构体、共用体、枚举、指针)
    vue-我可以在另一个计算属性中使用计算属性吗?
    【校招VIP】前端JS之深拷贝和浅拷贝
    第十章 单调栈 part02 503.下一个更大元素II 42. 接雨水
    ArcGIS创建格网
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    城市内涝积水监测,万宾科技内涝预警监测系统
  • 原文地址:https://blog.csdn.net/qq_69683957/article/details/126427907