javase的一些基础(1)

  不同进制的数据表现:

              二进制:由0,1组成。以0b开头。

              八进制:由0,1,...7组成。以0开头。

              十进制:由0,1,...9组成。默认整数是十进制。

              十六进制:由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。

  数据类型分类:

              A:基本数据类型

              B:引用数据类型(类,接口,数组)

             

       基本数据类型:4类8种

              A:整数                  占用字节数

                     byte                1

                     short                 2

                     int                     4

                     long                   8

                    

              B:浮点数

                     float                     4

                     double                  8

                    

              C:字符

                     char                   2

              D:布尔

                     boolean              1

             

              注意:

                     整数默认是int类型

                     浮点数默认是double类型。

                    

                     长整型后缀用L或者l标记。建议使用L。

                     单精度浮点数用F或者f标记。建议使用F。

 

 

  注意:

              boolean类型不能转换为其他的数据类型

 

       默认转换(从小到大的转换)

              A:byte,short,char—int—long—float—double

              B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型

 

 

  强制转换:

              从大的数据类型到小的数据类型。

             

              格式:

                     目标数据类型 变量 = (目标数据类型) (被转换的数据);

                    

              注意:

                     不要随意的去使用强制转换,因为它隐含了精度损失问题。

 

  面试题:

              byte b1=3,b2=4,b;

              b=b1+b2;

              b=3+4;

              哪句是编译失败的呢?为什么呢?

              b = b1 + b2;是有问题的。

              因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。

              常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。

 

 

 

  面试题:

              short s=1;s = s+1;

             

              short s=1;s+=1;

              上面两个代码有没有问题,如果有,那里有问题。

             

              为什么第二个木有问题呢?

                     扩展的赋值运算符其实隐含了一个强制类型转换。

                    

                     s += 1;

                     不是等价于 s = s + 1;

                     而是等价于 s = (s的数据类型)(s + 1);

 

  switch:表示这是switch选择结构

              表达式:这个地方的取值是有限定的

                     byte,short,int,char

                     JDK5以后可以是枚举

                     JDK7以后可以是字符串

  面试题:

              byte可以作为switch的表达式吗?

              long可以作为switch的表达式吗?

              String可以作为switch的表达式吗?

 

 

  控制跳转语句:

              break:中断, 跳出单层循环

              continue:继续, 跳出一次循环,进入下一次的执行

              return:返回, 其实它的作用不是结束循环的,而是结束方法的。

 

 

 

  方法重载:

              在同一个类中,方法名相同,参数列表不同。与返回值类型无关。

             

              参数列表不同:

                     A:参数个数不同

                     B:参数类型不同

 

 

  Java中的参数传递问题:

              基本类型:形式参数的改变对实际参数没有影响。

              引用类型:形式参数的改变直接影响实际参数。

 

  

  代码块:在Java中,使用{}括起来的代码被称为代码块。

         根据其位置和声明的不同,可以分为

              局部代码块:局部位置,用于限定变量的生命周期。

              构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。

                     作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。

              静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰了。

                     作用:一般是对类进行初始化。

                    

       面试题?

              静态代码块,构造代码块,构造方法的执行顺序?

              静态代码块 -- 构造代码块 -- 构造方法

              静态代码块:只执行一次

              构造代码块:每次调用构造方法都执行

你可能感兴趣的:(javase的一些基础(1))