java实习生面试题|java基础入门篇学习笔记

更新时间:2017-07-09    来源:基础入门    手机版     字体:

【www.bbyears.com--基础入门】

符号类型:
1.在C和C++中,int表示的整型与目标机器相关。在16位cpu上整型占2字节,在32位上占4字节;而在intel pentium的cpu上,
C和C++整型依赖于具体的OS,对于DOS和Windows3.1,整型占2字节,当Windows使用32位模式时,整型占4字节。

java没有无符号类型。

2.float类型的数值有一个后缀F。没有的浮点数值默认为double类型(也可以在后面添加后缀D以示区分).

一):这种方法方便,我就使用这种方法

 代码如下 float   a   =   123.2334f;  
float   b   =   (float)(Math.round(a*100))/100;(

这里的100就是2位小数点,如果要其它位,如4位,这里两个100改成10000)

(二):这个方法也简单,不过还要再转成float型:  

 代码如下 import   java.text.DecimalFormat;      
String   a   =   new   DecimalFormat("###,###,###.##").format(100.12345   );

(三):这个也可以用

 代码如下

float   ft   =   134.3435f;  
  int   scale   =   2;//设置位数  
  int   roundingMode   =   4;//表示四舍五入,可以选择其他舍值方式,例如去尾,等等.  
  BigDecimal   bd   =   new   BigDecimal((double)ft);  
  bd   =   bd.setScale(scale,roundingMode);  
  ft   =   bd.floatValue(); 

3.char采用UTF-16编码,占2字节,建议不要在程序中使用char类型
   
代码点:

代码点在U+0000到U+FFFF之间的就用u0000到uffff表示
U+10000到U+1FFFF之间的用 ud800到udbff中的作为第一个单元, 用udc00到udfff作为第二单元,组合起来表示

char这个概念就是指u0000到uffff,这是占两个字节
其余的用code point这个概念

可能作为java表示符的字符用isJavaIdentifierStart和isJavaIdentifierPart确认


与一个编码表中的某个字符对应的代码值。在Unicode标准中,代码点采用16进制表示,并加上前缀U+,如U+0041表示字母A的代码点。
  Unicode的代码点分成17个代码级别.基本的多语言级别(BMP):U+0000~U+FFFF(包括经典的Unicode代码),每个字符用16位表示,称为
  代码单元;剩余的16个附加级别:U+10000~U+10FFFF(包括一些辅助字符),采用一对代码单元编码(第一个代码单元:U+D800~U+DBFF,
  第二个代码单元:U+DC00~U+DFFF).例如:对于整数集合的数学符号,它的代码点是U+1D56B,并且是用两个代码单元U+D835和U+DD6B
  编码的。


类型转换:

下图为合法的类型转换,3个虚箭头表示可能有精度损失的转换。
     


 

1.两个数值进行二元操作时,有一个是double、float、long类型时,另外一个自动提升为对应类型;其他的类型转换都提升为int型;

2.如果想对浮点数进行舍入运算,以便得到最接近的整数,就应使用Math.round方法:

 代码如下 double x=9.99;
int nx=(int)Math.round(x);

是否可以四舍五入呢?当然可以,习惯上我们本能就会这样考虑,但四舍五入意味着误差,商业运算中可能意味着错误,同时Java中也没有提供保留指定位数的四舍五入方法,只提供了一个Math.round(double d)和Math.round(float f)的方法,分别返回长整型和整型值。round方法不能设置保留几位小数,我们只能象这样(保留两位):

 代码如下

public double round(double value){

return Math.round( value * 100 ) / 100.0;

}

但非常不幸的是,上面的代码并不能正常工作,给这个方法传入4.015它将返回4.01而不是4.02,如我们在上面看到的

 代码如下

4.015 * 100 = 401.49999999999994

因此如果我们要做到精确的四舍五入,这种方法不能满足我们的要求。

还有一种方式是使用java.text.DecimalFormat,但也存在问题,format采用的舍入模式是ROUND_HALF_DOWN(舍入模式在下面有介绍),比如说4.025保留两位小数会是4.02,因为.025距离” nearest neighbor”(.02和.03)长度是相等,向下舍入就是.02,如果是4.0251那么保留两位小数就是4.03。

 代码如下

System.out.println(new java.text.DecimalFormat("0.00").format(4.025));

System.out.println(new java.text.DecimalFormat("0.00").format(4.0251));

输出是

4.02

4.03

 

字符串:不可变字符串String的含义:不能修改字符串中的某个字符,但可以进行拼接等操作(其实也是调用StringBuild来操作).
字符串是常量;它们的值在创建之后不能改变。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享它们。例如: 
 
 
    

 代码如下 String str = "abc";

 等效于: 
 
 

 代码如下      char data[] = {"a", "b", "c"};
     String str = new String(data);

 下面给出了一些如何使用字符串的更多例子: 
 
 
   

 代码如下   System.out.println("abc");
     String cde = "cde";
     System.out.println("abc" + cde);
     String c = "abc".substring(2,3);
     String d = cde.substring(1, 2);


优点:编译器可以让字符串共享。
注:java字符串不是C字符型数组,而更像char *指针。
 

==与equals方法的区别:
     ==只能确定两个字符串是否放在同一个位置(地址);而equals检测两字符串的值(即内容)是否相等。只有字符串常量是共享的,
     可以用==;而+或substring操作的结果不是共享的。


在java中不允许嵌套定义一个变量。


多维数组:数组的数组(不规则)
可变参:

 代码如下

printf方法定义:
 public class PrintStream
  {
      public PrintStream printf(String fmt,Object... args){return format(fmt,args);}
  }

type var[]; 或type[] var;

声明数组时不能指定其长度(数组中元素的个数),

Java中使用关键字new创建数组对象,格式为:
数组名 = new 数组元素的类型 [数组元素的个数]

实例:
TestNew.java:

程序代码:

 代码如下
public class TestNew  {      
public static void main(String args[]) {          
int[] s ;          
int i ;          
s = new int[5] ;          
for(i = 0 ; i < 5 ; i++)
{              
s[i] = i ;          
}          
for(i = 4 ; i >= 0 ; i--) {              
System.out.println("" + s[i]) ;          
}      
}  
}

初始化:

1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
2.静态初始化:在定义数字的同时就为数组元素分配空间并赋值;
3.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。

实际上,printf方法接收两个参数:一个是格式字符串,另一个是Object[]数组(等同于Object...),其中保存着所有的参数(整型
数组或基本类型自动打包转换成对象)。然后扫描fmt字符串,并将第i个格式说明符与args[i]的值匹配起来。

本文来源:http://www.bbyears.com/asp/33969.html