java面试必备之语言基础

   Java语言基础

一、数据类型

   在Java中数据类型分为基本数据类型和引用数据类型。8种基本数据类型如下所示:



 

(1)整数类型

     整形数据有3种表示形式,分别为八进制、十进制、十六进制。

     十进制:不能以0作为十进制的开头(0除外);

     八进制:八进制必须以0开头;

     十六进制:十六进制必须以0x0X开头。

     二进制:二进制以0b开头(jdk1.7开始)。

整数直接量默认为int型,不能超范围,否则会编译错误;两个整数相除,结果还是整数,小数位无条件舍弃;运算时超出范围会发生溢出,溢出是需要避免的;

(2)浮点类型

     默认情况下小数都被看作是double型,若使用float型则需在小数后面添加Ff

精确运算场合不能使用doublefloat而要使用BigDecimal

常考问题:

(3)字符类型

     采用Unicode编码(unicode编码单元可以表示为十六进制值,\u000-\ufff),每个字符(char)都有一个对应的码(int);表现形式为char字符,实质上是int码;字符必须放在单引号中,有且仅有一个;特殊符号需通过\来转义。

     unicode/utf-8/utf-16区别:其实Unicode涉及到两个步骤,首先是给所有的字符指定一个唯一对应的数字(Unicode是用0至65535之间的数字来表示所有字符).第二步才是怎么把字符对应的数字以二进制保存在计算机中,于是就有utf-8/utf-16.
     UTF-16比较好理解,就是任何字符对应的数字都用两个字节来保存.当用UTF-8来表示一个字符时是可变的,有可能是用一个字节表示一个字符,也可能是两个,三个。

(4)布尔类型

Boolean只有truefalse两个值。整型值与布尔值之间不能进行相互转换。

(5)基本类型间的转换

     类型从小到大依次为:

      byte,short,int,long,float,double

              char

注意:long是8个字节,float是4个字节。但整数和浮点数的存储规则不一样,long的范围是小于float的。

  1)两种方式:

    1.1)自动类型转换:从小类型到大类型

    1.2)强制类型转换:从大类型到小类型,强转有可能会溢出和精度丢失

  2)两点规则:

    2.1)整数直接量可以直接赋值给byte,short,char,但不能超范围

2.2)byte,short,char型变量参与运算时,先一律转为int再运算

基本数据类型之间的转换(必看,经常容易考到):

http://blog.csdn.net/sky_ground/article/details/49738761

38种基本类型取值范围和占用内存如下:



 

二、常量与变量

        在程序执行过程中,其值不能被改变的称为常量,其值能被改变的称为变量。常量与变量的命名必须使用合法的标识符。命名规则为:只能包含字母、数字、_$符,并且不能以数字开头;严格区分大小写;不能使用关键字;可以中文命名,但不建议,建议"见名知意""驼峰命名法"常量通过final关键字进行限定,常量必须声明的同时初始化。

三、运算符

        Java中的运算符可以分为以下几组:

       算术运算符,关系运算符,逻辑运算符,赋值运算符,位运算符,其它运算符。

       (1)赋值运算符(=,+=,-=,*=,/=,%=

            赋值运算符处理时会先取得右方表达式的结果,因此如果有多个赋值运算会从最右方的“=”开始处理。

      (2)算术运算符(+,-,*,/,%,++,--

       整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN(0.0/0)结果.

      (3)关系运算符(<>==!=>=<=

       (4)逻辑运算符(&&||、!)

          逻辑运算是建立在关系运算基础之上的,逻辑运算的结果也是boolean型。&&为短路与,如果左边表达式为假时不会去判断右边的表达式,非短路与(&)会始终执行两边的表达式。

     (5)位运算符

          “按位与”(&):双目运算符,如果两个整型数据对应位都是1,则结果位才是 1,  否则为0.

          “按位或”(|):双目运算符,如果两个操作数对应位都是0,则结果位才是0,否则为1.

          “按位取反”(~):单目运算符,就是将操作数二进制中的1修改为0,0修改为1.

          “按位异或”(^):双目运算符,当两个操作数的二进制表示相同时(同为0或者同为1),结果为0,否则为1.

位移操作:

<<:左移,一个数左移n位,可以实现乘以2^n

>>:右移,一个数右移n位,可以实现除以2^n

>>>:无符号右移

     (6)其他

          字符串拼接:+

          三目运算符:boolean?1:2

      (7)运算符优先级如图:



 

 

<!--EndFragment-->

猜你喜欢

转载自1124442644.iteye.com/blog/2323803