一.
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
正确吗? 如果不正确 为什么 如果正确 输出结果是多少 这个题目 我看了 网上的解答 有几点疑问:
1. Other o = new Other(); 和
o = new Other();有什么区别?
为什么常量对象还可以++操作啊?
2.static 函数中 不是只能调静态函数吗? 但是public void addOne 不是静态的啊?二.
给你一个StringBuffer 字符串s 函数名 int StringReverse();
要求:
自己实现一个reverse()函数(反向输出)
不能使用库函数直接实现!
三
finalize final finally 的区别
四
先发 这三道吧 谢谢啦
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
正确吗? 如果不正确 为什么 如果正确 输出结果是多少 这个题目 我看了 网上的解答 有几点疑问:
1. Other o = new Other(); 和
o = new Other();有什么区别?
为什么常量对象还可以++操作啊?
2.static 函数中 不是只能调静态函数吗? 但是public void addOne 不是静态的啊?二.
给你一个StringBuffer 字符串s 函数名 int StringReverse();
要求:
自己实现一个reverse()函数(反向输出)
不能使用库函数直接实现!
三
finalize final finally 的区别
四
先发 这三道吧 谢谢啦
o = new Other();有什么区别?
—— 你至少要定义变量吧?或者分成两行也是可以的:
—— Other o;
—— o = new Other();
为什么常量对象还可以++操作啊?
—— 常量对象只是不能动它自身,属性随便动,也就是不允许: o = null; 或者 o = new Object();
2.static 函数中 不是只能调静态函数吗? 但是public void addOne 不是静态的啊?
—— 显然无此说法,你理解错误了。
谢谢 大侠的回答 那还有 剩下的题目呢? 也帮忙看看 谢啦。
public static String i;
public static void main(String args[]){
System.out.println(i+"2"=="2");
}
}补充一个 上面这个程序的输出为什么是false??? 谢谢啦
要求:自己实现一个reverse()函数(反向输出);不能使用库函数直接实现!
这个感觉你是不是中间有段打错字的,但是反向输出并不难,你也不要太懒了吧
public static StringBuffer reverse(StringBuffer sb) {
StringBuffer ret = new StringBuffer();
for (int i = sb.length()-1; i >=0; i--) ret.append(sb.get(i));
return ret;
}
public static String i;
public static void main(String args[]){
System.out.println(i+"2"=="2");
}
}补充一个 上面这个程序的输出为什么是false??? 谢谢啦
字符串在java中是常量,两个字符串不能直接使用==来比较,两个字符即使内容相同,但是他们在内存中的地址并不相同,因此返回的值也是false
1、运算符优先级必然是先做+;
2、static String i; 会赋予该 i 变量为 null
3、字符串连接结果是:null2"null2" == "2" 不是false还能是啥?
很遗憾你说错了,比如:
String a = "2";
String b = "2" + "";
System.out.println(a == b);
结果你认为是? true !当然这个知识本身我认为不是那么的重要。
按理说用a.equals(b);我能理解
为什么也可以直接a == b;
求大侠再回来看看我这个问题
a==b 这个本质上是因为String采用享元模式的特色,是特例,很多考题喜欢考,具体可以Google。
但这种知识我个人认为其实意义不大。正规做法仍然是 equals()
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
正确吗? 如果不正确 为什么 如果正确 输出结果是多少 这个题目 我看了 网上的解答 有几点疑问:
1. Other o = new Other(); 和
o = new Other();有什么区别?
为什么常量对象还可以++操作啊?
2.static 函数中 不是只能调静态函数吗? 但是public void addOne 不是静态的啊?
楼主的第一题正确,当时不可能有打印啊
Other o = new Other(); 和o = new Other();没有区别,
o = new Other();只是Other o = new Other(); 的简写“static 函数中 不是只能调静态函数”这种说法没有听说过啊
第一题
final是最终变量 也就是说这个变量的栈中的值是不允许改变的,但是所指向的堆地址中的内容可以改动。
所以第一没有问题,但是没有输出。
第二题
这题不知道可不可以用一些函数,笨方法就是改成数组然后倒叙打印出来就行了
第三题
这个属于基础知识问题,楼主还是百度吧
类外说一下 公司是个外企 但是我去看了看 只有很小的两个大厅 估计规模不大 可是奇怪 怎么还是外企呢?这也太抠门了。csdn真是强大 我记得 我貌似没有什么问题在这不能解决的 除了几年前问了一 不通过驱动进入window内核的方式
天完全没区别啊:
public static String reverse(String sb) {
String ret = "";
for (int i = sb.length()-1; i >=0; i--) ret+=sb.charAt(i));
return ret;
}
静态函数中不能调用非静态变量 这句话对不对啊?
public class Test {
private int a = 10; // 这个a不是静态变量吧?
public void main(String arg[]) { // 这个是静态函数对吧?
String str = String.valueOf(100); // 这个str不是静态变量吧?
Test t = new Test();
System.out.println(str); // 访问没报错
System.out.println(t.a); // 访问也没报错
}
}
所以这句话应该说是有上下文的,它主要指的是不能直接:
System.out.println(Test.a);
final是定义常量用的,
finally是处理exception的时候用的,他们的区别非常大
是在垃圾收集器执行之前调用finalize其他都对。
但是我不理解 的是楼主这么容易的都不会。
你去面什么试??????????????
搞不懂
这个我觉得看源码是真理吧???
而且不是String中有个常量池来着吗???
如果按照8楼的说法:
System.out.println(i+"2"=="null2");应该是true,但是实际运行结果是false,这是因为i+"2"和"null2"的对象地址确实不相同。
再说9楼:对非特殊情况(基本类型及其包装类型),“==”在运行期比较对象地址这个说法,楼主不用心存疑虑,这个是正确的,7楼说的并没有错。之所以9楼的运行结果是true,确实如10楼所说,是Java在编译期对String的优化,使"a"+""与"a"具有同样的引用,具体可以参考http://blog.csdn.net/walkerjong/article/details/6775881,而String优化机制ldh911说对了,共享元模式实现滴。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部类变量,局部变量必须定义成final 类型,
final 是异常处理语句结构的一部分,表示总是执行。
finalize 是Object 类的一个方法,在垃圾收集器执行的时候会被调用被回收对象的此方法,可以覆盖此方法提供的垃圾收集时的其他资源回收,
StringBuffer ret = new StringBuffer();
for (int i = sb.length() - 1; i >= 0; i--) {
ret.append(sb.substring(i, i + 1));
}
return ret;
}
StringBuffer ret = new StringBuffer();
for (int i = sb.length() - 1; i >= 0; i--) {
ret.append(sb.substring(i, i + 1));
}
return ret;
}
给你一个StringBuffer 字符串s 函数名 int StringReverse();
要求:
自己实现一个reverse()函数(反向输出)
不能使用库函数直接实现!
*/
class StringReverseDemo
{
public static StringBuffer s = new StringBuffer(new String("abcdefg"));
public static void main(String[] args)
{
StringReverseDemo.stringReverse();
System.out.println(s.toString());
}
public static void stringReverse()
{
for(int i=0;i<s.length()/2;i++)
{
int index = s.length() - i - 1;
char temp = s.charAt(index);
s.setCharAt(index,s.charAt(i));
s.setCharAt(i,temp);//交换对应字符
}
}
}