java 数据类型,运算符,进制转换,数据结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37636695/article/details/84334245

Java数据类型

对于java来说,我们将变量分为两个大类

声明变量符合以下规则

变量类型 变量名=初值;

使用小驼峰命名;

类级变量命名使用大驼峰;

编码表:二进制和生活中文字的对应关系表。

ASCII码表:美国统一二进制转换编码表。

GB2312:信息交换用汉字编码字符集·基本集;

Unicode:国际统一字集编码!

1.       基本数据类型。(是关键字,全部是小写。)

数值型:

整数型:

1.1          Int –整型 4字节(byte) 带符号位的整数(int a=1;)-2^31~2^31-1

1.2          Byte –字节型 1个字节(8位,每一位叫做byte位,8个(byte位)二进制位表示,能够表示2^8个数据) 带符号位的整数(byte b=0;)10000001    整数范围:-128~127.

1.3          Short-短整型 2个字节 带符号位的整数(short s=1;)整数范围:-2^15~2^15-1(-32768~32767);

1.4          Long-长整型 8个字节 带符号位的整数(long l=1L;)-2^63~2^63-1,定义长整形必须加上L。long类型不加L会自动降级为int。取余数得到最后的值。

浮点类型:

1.5          Float-单精度浮点型 4个字节 带符号位的浮点数(float f = 0.1f;),定义float必须加上F。

1.6          Double-双精度浮点型 8个字节带符号位的浮点数(double d=o.1D;)

字符型:

1.7          Char-字符型 (单个数字,字母,符号。。。。)2个字节 无符号(char c=’1’;)用单引号定义。0~2^16-5(0~65535);

Boolean型:

1.8          Boolean 布尔型true/false(boolean b1=true;)

2.       引用数据类型。(大驼峰。)

1.1          类类型

1.1.1     String -2个字节 字符串引用类型(string s=”abc”;)

1.1.2     BigDecimal-大浮点型,精度非常高,一般用于钱的存放。

1.2          接口类型

1.3          数组类型

1.4          枚举类型

类型转换

小转大直接转,大转小强制转。

b= (byte) s;强制转型(可能会丢失精度,只能在基本类型中转换)

格式化输出:%d:占位符 d%:整数,f%:小数,%s:字符串,%c:字符型。

 Java中的参数传递问题

        Java中只有值传递(地址也是值)。

        基本类型:形式参数的改变不影响实际参数

        引用类型:形式参数的改变直接影响实际参数(此时传递的是地址,也就是对象的引用,所以如果改变了,其他的引用都会改变。)

        String作为参数传递,效果和基本类型作为参数传递是一样的。

运算符分类:

  • 算术运算符(加减乘除)
  • 关系运算符(> ,>=,<,<=,!=,==)
  • 位运算符
    • 按照二进制位(byte位)进行运算。
    • 应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

位运算符作用在所有的位上,并且按位运算.

A=60.B=13;

技巧:二进制0是false,1是true。

如果相对应位都是1,则结果为1,否则为0

(A&B),得到12,即0000 1100

|

如果相对应位都是0,则结果为0,否则为1

(A | B)得到61,即 0011 1101

^

如果相对应位值相同,则结果为0,否则为1

(A ^ B)得到49,即 0011 0001

按位补运算符翻转操作数的每一位,即0变成1,1变成0。

(〜A)得到-61,即1100 0011

<< 

按位左移运算符。左操作数按位左移右操作数指定的位数。

A << 2得到240,即 1111 0000

>> 

按位右移运算符。左操作数按位右移右操作数指定的位数。

A >> 2得到15即 1111

>>> 

按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

A>>>2得到15即0000 1111

  • 逻辑运算符(&&,||,!)
  • 赋值运算符(有关于等的都是赋值!)
  • 其他运算符() 
    • 条件运算符(三元运算?:)
    • instanceof 运算符:该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
      • String name ='James';boolean result = name instanceofString;// 由于 name 是 String 类型,所以返回真
  • 运算符优先级:(优先级依次降低)

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

+ + - !〜

从右到左

乘性 

* /%

左到右

加性 

+ -

左到右

移位 

>> >>>  << 

左到右

关系 

>> = << = 

左到右

相等 

==  !=

左到右

按位与

左到右

按位异或

^

左到右

按位或

|

左到右

逻辑与

&&

左到右

逻辑或

| |

左到右

条件

?:

从右到左

赋值

= + = - = * = / =%= >> = << =&= ^ = | =

从右到左

逗号

左到右

进制转换:

整数常量进制:

前面加0表示8进制,前面加0x表示16进制。

8进制数,其实就是二进制位中的3个二进制位为一个八进制位。

16进制数:其实就是二进制中的四个二进制位为一个16进制位。

十进制转任意进制的方法。

/**

         * 

         * @param num传入的你需要转换的十进制数

         * @param base与运算需要传入的模具,如果是2进制的话,传1,如果是8进制的话传7,如果是十六进制的话传15.

         * @param offset像右边移动步长,2传1,8传3,十六传4。

         * @return,返回一个char类型数组。

         */

        public char[] toChange(int num,int base,int offset){//十进制转任意进制。

            char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

            char[] arr=new char[32];

            int pos=arr.length;

//            char[] arr1=new char[32];

            while(num!=0){

                int temp=num & base;

                arr[--pos]=chs[temp];

                num =num >>> offset;

            }

            char[] newarr=new char[arr.length-pos];

            for(int i=0;i<newarr.length;i++){

                newarr[i]=arr[i+pos];

            }

            return newarr;

        }

Java数据结构:

栈 :先进后出(子弹夹)

队列 :先进先出(排队)

数组 :查询快,增删效率低。

链表 :查询慢,增删快。

        由一个链子把多个结点连起来组成的数据。

        结点:有数据和地址组成。(数据域和指针域组成)

树 :

哈希表 :是一个元素为链表的数组。综合了数组和链表的好处(新华字典)

               特点:查询快,增删快。

            哈希表依赖于哈希值存储。

            唯一性:底层依赖对象:int hashCode() 和boolean equals(Object obj)

面试题:常见数据结构的优缺点?(数据结构+算法)。

猜你喜欢

转载自blog.csdn.net/qq_37636695/article/details/84334245