001-java面试题---简答题001

1.简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。  

区别主要答两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路

2.将数值,数字类型转换为字符串类型

String s = String.valueOf( value); // 其中 value 为任意一种数字类型。 

  字符串型转换成各种数值类型: 
String s = "169"; 
byte b = Byte.parseByte( s ); 
short t = Short.parseShort( s ); 
int i = Integer.parseInt( s ); 
long l = Long.parseLong( s ); 
float f = Float.parseFloat( s ); 
double d = Double.parseDouble( s ); 

   数值,字符串型转换成各种数字类型: 

如:Integer.valueOf(a);//a是int类型或字符串

     数字类型转换成各种数值类型: 

如:Integer.intValue();

3,取得小数点的前两位,并进行四舍五入

  取得小数点前两位的4种方法

 

  1. //取小数点的几种办法  
  2. class TestDot2   
  3.  
  4. //方法1  
  5. public void test1(double c)  
  6.  
  7.    java.text.DecimalFormat df new java.text.DecimalFormat("#.##");  
  8.    System.out.println(df.format(c));  
  9.  
  10. //方法2  
  11. public void test2(double c)  
  12.  
  13.      
  14.    java.math.BigDecimal bd     new   java.math.BigDecimal(String.valueOf(c));     
  15.    bd     bd.setScale(2,java.math.BigDecimal.ROUND_HALF_UP);     
  16.    System.out.println(bd);  
  17.  
  18. //方法3  
  19. public void test3(double c)  
  20.  
  21.    long   l1     Math.round(c*100);   //四舍五入     
  22.         double   ret     l1/100.0              //注意:使用   100.0   而不是   100       
  23.   
  24.    System.out.println(ret);  
  25.  
  26. //方法4  
  27. public void test4(double c)  
  28.   
  29.    c=((int)(c*100))/100.0  
  30.    System.out.println(c);  
  31.  
  32. public static void main(String[] args)   
  33.  
  34.    double 3.056 
  35.    TestDot2 td2 new TestDot2();  
  36.    //td2.test1(c);  
  37.    //td2.test2(c);  
  38.    //td2.test3(c);  
  39.    td2.test4(c);  
  40.  
  41. }  

3,数组与ARRAYLIST的关系与区别

一、数组与ArrayList的主要区别:效率和primitive type
数组([]):最高效;但是其容量固定且无法动态改变;
ArrayList:容量可动态增长;但牺牲效率;

建议:
首先使用数组,无法确定数组大小时才使用ArrayList
1.
效率
数组扩容是对ArrayList效率影响比较大的一个因素。
每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,
在这个临界点的扩容操作,应该来说是比较影响效率的。
ArrayList
Array的复杂版本
ArrayList内部封装了一个
Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如IndexIndexOfContainsSort等都是在内部数组的基础上直接调用Array的对应方法。
2.
类型识别
ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为
Object,编译时不检查类型,但是运行时会报错。
注:jdk5中加入了对泛型的支持,已经可以在使用ArrayList时进行类型检查。
从这一点上看来,ArrayList与数组的区别主要就是由于动态增容的效率问题了
3.
数据类型.ArrayList可以存任何Object,如StringEmployee等,但不支持基本数据类型,除非使用wrapper

4,数组的拷贝

JAVA里面,可以用复制语句”A=B”给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么引用同一数组的变量也要发生改变.
以下是归纳的JAVA中复制数组的方法:
1.
使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点
2.
使用clone方法,得到数组的值,而不是引用,不能复制指定元素,灵活性差一点
3.
使用System.arraycopy(src,srcPos, dest, destPos, length)方法,推荐使用
举例:
1.
使用FOR循环
int[] src={1,3,5,6,7,8};
int[] dest = new int[6];
for(int i=0;i<6;i++) dest[i] = src[i];
2.
使用clone
int[] src={1,3,5,6,7,8};
int[] dest;
dest=(int[]) src.clone();//
使用clone创建
副本,注意clone要使用强制转换
3.
使用System.arraycopy
int[] src={1,3,5,6,7,8};
int[] dest = new int[6];
System.arraycopy(src, 0, dest, 0, 6);
——————————————————————-
System
提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制.
其函数原型是:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos,int length)

src:源数组;srcPos:源数组要复制的起始位置;
dest:
目的数组;destPos:目的数组放置的起始位置;
length:
复制的长度.

注意:src and dest都必须是同类型或者可以进行转换类型的数组.
有趣的是这个函数可以实现自己到自己复制,
比如:int[]fun ={0,1,2,3,4,5,6};
System.arraycopy(fun,0,fun,3,3);

则结果为:{0,1,2,0,1,2,6};



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值