Java开发工具的安装,环境配置,关键字与标识符,数据类型,流程控制以及数组等概念

   这一周学习了如何进行Java环境配置,Java开发工具的安装,Java的关键字与标识符,常量与变量,数据类型,运算符,流程控制等基础知识,其中数据类型与运算符的相关概念和计算是重难点,现在对这两个部分做一个简单总结:

1.基本数据类型

整数型,浮点型,字符型,布尔类型

2.引用数据类型

​ 在 Java中,除了基本数据类型以外的数据类型,都是引用数据类型,常用的引用数据类型包括类,数组,接口,String等.

​ 在java中引用类型通常表示为一个对象的引用,通过该引用可以获取到对象的相关信息,以及调用相关方法. 声明引用类型变量时,系统只为该变量分配引用空间,并未创建一个具体的对象.

以类举例:

​ 创建一个学生类,在这个类中包含一些变量(全局变量)和一些方法.这个定义的学生类就是引用数据类型

public class Student{
          // 定义的一个字符串变量  
         String stuname="张三";
         char  sex= '男';
         int age = 20// 定义一个方法 
         public void showInfo(){
             System.out.println(stuname);
             System.out.println(sex);
             System.out.println(age);
             
         }
      
  }

​ 如何使用这个学生类型(引用数据类型),方法如下:

public static void main(String [] args){
       // 定义学生类型  ,引用数据类型需要创建 引用的对象 
       // 引用数据类型   变量名  =   null 
      //  基本数据类型   变量名  = 初始值
      // 对于类的创建
      // 类名   对象名  =  new  类名(); 
      Student stu = new Student();
      // 对象名.方法名();
      stu.showInfo();
      
  }
基本数据类型与引用数据类型的区别:

1、创建方式不同,基本数据类型直接通过定义变量的方式创建,而引用数据类型需要new一个对象

2、在JVM中的内存分配不同,基本数据类型的内存在栈内存中直接创建,而引用数据类型是在栈内存中定义引用的地址,实际的内存分布在堆内存中

3、引用数据类型可以调用它的方法,而基本数据类型没有方法

基本数据类型的内存分布图:
在这里插入图片描述

引用数据类型的内存分布图:
在这里插入图片描述

3.位运算符

移位运算符说明举例
<<左移:将一个数转换成二进制之后,整体往左移动n位,扩大倍数 .一个数按位向左移动n位,结果等价于这个数乘以2的n次方3<<2 <==> 3*2的2次方
>>右移:将一个数转成二进制后,整体往右移动n位,缩小倍数.一个数按位向右移动n位,结果等价于这个数除以2的n次方(除不尽单独考虑,取整)8>>2 <==> 8/2的2次方
>>>无符号的右移 ,不考虑符号位,将这个数按位整体往右移动n位5>>>2,-5>>>2
^按位异或,两个数的二进制位对应值不同则为1,否则为04^5
~将一个数转成二进制后按位取反~5

示例:

//Java的<<  >>   >>> 都是针对补码来进行的,因为Java只存储补码

//正整数的移位  <<   >>   >>>  因为正数的原码,反码,补码相同,所以对于正整数直接处理其原码
        //左移
        System.out.println(3<<2);  // 12
        System.out.println(7<<3); // 7*8=56

        // 正数的右移>>和无符号右移>>>结果一样
        System.out.println(16>>2);// 4
        System.out.println(18>>2);// 4
        System.out.println(3>>2);
        System.out.println(3>>>2);


				// 负数的移位,负数的<<,>>时符号位不变即始终为1,且符号位不参与计算
        // 负数的左移位<<还是为负数
        System.out.println(-4<<2); // -4*2的2次方 =
        /**
         *   -4的原码: 1 0000... 00000100
         *          *   -4的反码: 1 1111... 11111011
         *          *   -4的补码: 1 1111... 11111100
         *          *   开始移位   2
         *             1 1111... 11110000
         *    最后结果 = 取反+1
         *             1 0000... 00001111  + 1
         *  :
         *             1 0000... 00010000  =-16
         */

        // 补码 = 反码+1
        //负数是对于补码 进行移位 
        //System.out.println(-3<<3);//-24

        System.out.println(-4>>1);//-4/2 =-2

					//负数的右移
					System.out.println(-3>>3)
					// -3的原码: 1000......00000011
					// 反码: 1111......11111100
					// 补码: 1111......11111101 
          // 右移3位 :1111......11111111
          // 取反: 1000......00000000  
          // 补码: 1000......00000001
          // 转换成二进制为:-1


				//负数的无符号右移
        // -16无符号右移2位
        System.out.println(-16>>>2);   //1073741820   
        // -16 的补码算出来
        /**
         * 原码  10000.. 0010000
         * 反码  11111.. 1101111
         * 补码  11111.. 1110000
         * 右移2位  00111.. 1111100  由于不考虑符号,移动后高位全部补0 变成正数
         * 因为正数原码和补码一致 所以这个数即为所得,转为十进制是:
         *      1073741820
         */

//按位异或^
          System.out.println(4^5);
          //4的二进制:100
          //5的二进制:101
          //4^5的二进制为:001,转为十进制为如1(两个相应的二进制位值不同则为1,否则为0)
          System.out.println(5^9);//12

					//按位取反
          System.out.println(~5);
          //      0000..00000101
          // ~5   1111..11111010  取反后成了负数   继续还原   
          //      1000..00000101 + 1 取反+1
          //      1000..00000110 =-6	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值