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种方法
- //取小数点的几种办法
- class
TestDot2 - {
- //方法1
- public
void test1(double c) - {
-
java.text.DecimalFormat df = new java.text.DecimalFormat("#.##"); -
System.out.println(df.format(c)); - }
- //方法2
- public
void test2(double c) - {
-
-
java.math.BigDecimal bd = new java.math.BigDecimal(String.valueOf(c)); -
bd = bd.setScale(2,java.math.BigDecimal.ROUND_HALF_UP); -
System.out.println(bd); - }
- //方法3
- public
void test3(double c) - {
-
long l1 = Math.round(c*100); //四舍五入 -
double ret = l1/100.0; //注意:使用 100.0 而不是 100 -
-
System.out.println(ret); - }
- //方法4
- public
void test4(double c) - {
-
c=((int)(c*100))/100.0; -
System.out.println(c); - }
- public
static void main(String[] args) - {
-
double c = 3.056; -
TestDot2 td2 = new TestDot2(); -
//td2.test1(c); -
//td2.test2(c); -
//td2.test3(c); -
td2.test4(c); - }
- }
3,数组与ARRAYLIST的关系与区别
一、数组与ArrayList的主要区别:效率和primitive type。
数组([]):最高效;但是其容量固定且无法动态改变;
ArrayList:容量可动态增长;但牺牲效率;
建议:
首先使用数组,无法确定数组大小时才使用ArrayList!
1.效率:
数组扩容是对ArrayList效率影响比较大的一个因素。
每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,
在这个临界点的扩容操作,应该来说是比较影响效率的。
ArrayList是Array的复杂版本
ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。
2.类型识别:
ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为Object,编译时不检查类型,但是运行时会报错。
注:jdk5中加入了对泛型的支持,已经可以在使用ArrayList时进行类型检查。
从这一点上看来,ArrayList与数组的区别主要就是由于动态增容的效率问题了
3.数据类型.ArrayList可以存任何Object,如String,Employee等,但不支持基本数据类型,除非使用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};