1 表达式((3+4)*6)+3*(5+6) 将括号配对,且输出配对括号的下标位置
2 写出4个addFoo函数实现的效果有什么不同
class Foo{
protected Map<Integer,String>map=new HashMap<Integer,String>();
public void addFoo(int key,String value){
synchronized(this){
map.put(key,value);}}
public synchronized void addFoo(int key,String value){
map.put(key,value);}
public void addFoo(int key,String value){
synchronized(Foo.class){
map.put(key,value);}}
public void addFoo(int key,String value){
synchronized(map){
map.put(key,value);}}}
3 有一个int数组,存放一张图片的颜色数据,假定有函数point(int color,int x,int y)在屏幕上画一个点已知图片的原始宽高,请完成下面的函数,将图片缩小一倍画在屏幕上。 int [] pic=new int[]{0xff00ff,0x000000,0xffffff,.......};
public void drawsmall(int []pic,int picX,int picY,int picWidth,int picHeight){.....}4 请比较一下List ,Map,Set和Vector
5 int a=0; int x=~(a^(a-1))-1; X的值是什么?
6 请说明Comparable接口的用途
2 写出4个addFoo函数实现的效果有什么不同
class Foo{
protected Map<Integer,String>map=new HashMap<Integer,String>();
public void addFoo(int key,String value){
synchronized(this){
map.put(key,value);}}
public synchronized void addFoo(int key,String value){
map.put(key,value);}
public void addFoo(int key,String value){
synchronized(Foo.class){
map.put(key,value);}}
public void addFoo(int key,String value){
synchronized(map){
map.put(key,value);}}}
3 有一个int数组,存放一张图片的颜色数据,假定有函数point(int color,int x,int y)在屏幕上画一个点已知图片的原始宽高,请完成下面的函数,将图片缩小一倍画在屏幕上。 int [] pic=new int[]{0xff00ff,0x000000,0xffffff,.......};
public void drawsmall(int []pic,int picX,int picY,int picWidth,int picHeight){.....}4 请比较一下List ,Map,Set和Vector
5 int a=0; int x=~(a^(a-1))-1; X的值是什么?
6 请说明Comparable接口的用途
解决方案 »
- java中的死循环问题。
- 如何进行整合?
- JTextField填写内容使用正则表达式匹配出问题了
- JPanel加载背景图后,无法显示JLabel
- 如何加载一个指定路径的图片?
- BufferedReader#readline()发生莫名IllegalArgumentException异常
- JSpinner问题,很简单,高手一看就可以轻松拿分了,小弟不会呀,着急!!!!!!!!!!!!!!!
- 我现在有long val=123;但要显示成00000123如何办?就是格式化的问题,用0填葱
- 高分求助(GUI问题)
- 哪里能下载到weblogic(BEA除外)
- 给定n个元素的序列,求这个序列有多少种组合
- Java日期类型的转换
String str = "((3+4)*6)+3*(5+6)";
System.out.println(check(str));
} public static boolean check(String expression){
Stack<Integer> stack = new Stack<Integer>();
for (int i = 0; i < expression.length(); i++) {
switch (expression.charAt(i)) {
case '(':
stack.push(i);
break;
case ')':
try
{
System.out.print("配对括号下标: (" + stack.pop() + ",");
System.out.println(i + ")");
}
catch(Exception ex){
System.out.println("右括号没有与之匹配的左括号");
return false;
}
break;
default:
break;
}
}
if (stack.size() > 0) {
System.out.println("左括号没有与之匹配的右括号");
return false;
}
return true;
}
}
a-1 = -1
-1 = 11111111 11111111 11111111 11111111 (bitwise 32-bits)
0 = 00000000 00000000 00000000 00000000 (bitwise 32-bits)
a^(a-1) = 0 xor -1 = -1 (bitwise xor)
= 00000000 00000000 00000000 00000000 xor 11111111 11111111 11111111 11111111
= 11111111 11111111 11111111 11111111
~(a^(a-1)) = ~(-1) = 0 (unary bitwise complement)
=~(11111111 11111111 11111111 11111111) = 00000000 00000000 00000000 00000000~(a^(a-1))-1 = 0 - 1 = -1
2 写出4个addFoo函数实现的效果有什么不同
class Foo{
protected Map<Integer,String>map=new HashMap<Integer,String>();
public void addFoo(int key,String value){
synchronized(this){
map.put(key,value);}}
public synchronized void addFoo(int key,String value){
map.put(key,value);}
public void addFoo(int key,String value){
synchronized(Foo.class){
map.put(key,value);}}
public void addFoo(int key,String value){
synchronized(map){
map.put(key,value);}}}
看得有点头晕,错了勿怪1,2 lock on method 一样的效果
3, lock on class
4, lock on map
假设有Object a,b;
我们可以认为a等于b,如果且仅如果 a.compareTo(b)==0
List:元素有序,可重复
Set:元素无序,不可重复
MAP:KEY-VALUE,KEY唯一不可为NULL,值可重复可为NULL
Vector:与新collection不同,是线程安全的