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){
	}
	
};

(三)、Java的输入输出:

1.输出问题:

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

在这里插入图片描述

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.	这个方法只有遇到回车才会结束
代码展示:
//    引入工具包
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,所以自动分配给了第二个接收数据.)

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

两个体系混用,回车

在这里插入图片描述

(三)、运算符的规则:

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

bety<short<int<long<float<double

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.短路或

||       一个为真  ,全部为真        (区别在于只要第一个是个确定的,
													第二个我可以不看)
代码展示:
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);
		}		
	}
}
效果展示:

在这里插入图片描述

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

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
}
}

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
}
}

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
}
}

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
}
}

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 
}
}

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
}
}

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

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

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

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉士先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值