Java基础

本文深入解析Java中的变量类型,包括实例变量、静态变量和局部变量的特点及存储位置。详细介绍了常量与变量的区别,以及自动装箱/拆箱机制的工作原理。此外,还探讨了Java中的运算符,包括优先级、一元运算符、算术运算符和位运算符的使用。
摘要由CSDN通过智能技术生成

一.Java中的常量/变量
变量 ;实例变量
静态变量
局部变量

public class TestDemo1 {
        int i;//实列变量  存放在堆中
        static  int c;//静态变量,不属于对象,只属于类本身 存放在方法区中
    void funny(){
        int a=10;//局部变量,使用前必须初始化。存放在虚拟机栈中
                  //字母 数字 下划线 美元符号
        final int A = 10//A叫做常量
        final int A;
        A = 10}
    }

常量的特性:在编译时候统一处理。
变量的特性:在运行时候才能知道它的值。
二.java中的拆包/装包

java为每一个基本数据类型都引入了对应的包装类型,int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换,对应如下:

原始类型:boolean,char,byte,short,int,long,float,double

包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
所以最基本的一点区别是:Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。

public class TestDemo1 {
    public static void main(String[] args) {
        int i = 128;
        Integer i2 = 128;
        Integer i3 = new Integer(128);
        System.out.print(i==i2);//integer会自动拆箱,所以为true
        System.out.print(i==i3);
        Integer i4 = 127;//编译时被翻译成:Integer i4 = Integer.valueOf(127);
        Integer i5 = 127;
        System.out.print(i4==i5);//true
          Integer i6 = 128;
          Integer i7 = 128;
          System.out.print(i6==i7);//false
             }
       }

关键是valueOf()函数,这个函数是对于-128~127之间的数进行缓存,下次再写入Integer i5 = 127时,就会直接在缓存中取,不会再new了,所以i4和i5的比是true。
总结:
1.Integer与new Integer是不会相等的,不会经历拆箱过程,new出来的对象放在堆中,而非new的Integer常量则在常量池(方法区),他们的内存地址不一样,所以为false。
2.两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。因为java在编译Integer i2 = 128的时候,被翻译成:Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存。

三.运算符

. [] {} (方法调用属性获取) 优先级最高


class TestDemo1 {

  
int[] array = {1.2.3.4.5.6};

  
int a =array[0];

   
int len = array.length;

 

一元运算符:! ~ ++ -


class TestDemo1 {

   
int a =2 ;

    boolean
n = true;

   
System.out.print(~a);//用二进制计算,且按位取反,其结果是-3.

   
System.out.print(!n);//这是非运算所以是false。

   
a++;//将a的值+1

   
System.out.print(a):

    
a--;//将a的值-1;

     
System.out.print(a):

    

加减乘除:+ - * /

再求除法和模运算时注意:


System.out.println(-10%3);//-1  模运算求的是余数

System.out.println(-10%-3);//-1

System.out.println(10%-3);//1

float f1 = 5/2;//2.0

float f2 = (float)(5.0/2);//2.5  小括号运算级高,所以答案为2.5

float f3 = (float)5/2;//2.5

 

左移:<<

如3的二进制数 0000 0011 左移则变为0000 0110 为6 相当于3X2=6; 即左移就是乘法。

右移 :>>

3的二进制0000 0011 右移则变为0000 0001 为1 相当于除2所以为1

按位或/按位异或: |
/^

按位异或 相同为0 不同为1

如; 0000 1011

^ 0000 1101

结果:0000 0110

按位或 0000 1011

| 0000 1101

结果:0000 1111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值