分析下面的java代码段 看懂java代码
java代码段分析
obj.getClass()==R.class
延边朝鲜族网站建设公司创新互联建站,延边朝鲜族网站设计制作,有大型网站制作公司丰富经验。已为延边朝鲜族近1000家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的延边朝鲜族做网站的公司定做!
表示obj对象的类与R是同一个类
getClass是 :返回一个对象的运行时类
R.class表示R这个类运行时的类。其它是它本身,class是每一个类都有的一个属性。可以用类名.class来得到当前的它的运行时的类
分析下面Java程序,写出该程序输出的结果
b
c
-2
结果是如上显示,估计你做完了题目,解释一下吧,
a对应的ASCII码是97,c对应的ASCII码是99,所以:
第一句中++x是先执行加法,后取值,即97 + 1 = 98,打印出对应的字符为b;
第二句中y++是先执行取值,后加法,即直接打印出对应的字符为c;
第三句中x - y是直接拿a对应的97减去c对应的99 = -2;
可能有人会有疑问为什么第三句不是98-100呢?其实是因为虽然上面++x和y++操作了,但是都不影响x和y的原来的值,所以应该是拿97-99来算。
哪位大哥给我分析一下下面这段Java代码,越详细越好!
Scanner sc = new Scanner(System.in);//输入的数字
int cases;//声明一个变量cases
cases = sc.nextInt();//把输入的数字赋值到变量cases
while ((cases--) != 0) {//判断cases的值是否等于0,如果不是就进入while循环
BigInteger m = new BigInteger(sc.next());//输入一个数转成BigIteger类型
BigInteger n = new BigInteger(sc.next());//输入一个数转成BigIteger类型
n = n.divide(m);//两个数相除,n除以m
/*返回此 BigInteger 的最小的二进制补码表示形式的位数,不包括 符号位。
* 对于正 BigInteger,这等于常规二进制表示形式中的位数。
* (计算 (ceil(log2(this 0 ? -this : this+1)))。)*/
int l = n.bitLength() - 1;
if (l % 6 == 0)
System.out.println(0);
else
System.out.println((1 (l % 6)));//(1%6)得到的二进制的值向左移一位
}
以下Java代码执行结果是什么,请详细分析为什么?
第一行输出结果是abc:
原因是:
s.substring(1);
s.replace("bc", "xyz");
这两句话没有任何作用 ~因为String是属于值传递~
第二行 输出结果是false:
原因是:
用==比较字符串,是比较两个变量本身的值,即两个对象在内存中的首地址。用equals比较就会为true,equals比较的是内容是否相同。
附:
1、值传递、引用传递的区别:
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数
2、用==比较和用equals比较的区别:
对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同.
“==”比较两个变量本身的值,即两个对象在内存中的首地址.
“equals()”比较字符串中所包含的内容是否相同.
分析如下Java代码,编译运行后将输出
选B。结果输出为2.1、在main()函数中Test test = new Test();ArrayList al = new ArrayList();al.add(1);截止这里,al里面有一个数据1。al是属于main()函数中的ArrayList对象的引用.2、到了static void print(ArrayList al) {//你在这里定义的al是属于print的变量,只是与main()函数中的alal.add(2); //有同一个引用,到这里al里面值为【1,2】al = new ArrayList();//这时,你在print函数中又创建一个对象,把这个对象的引用给al,但是main()函al.add(3); //数中的al的引用与这里没有任何关系al.add(4);//当执行完al.add(4)结束,那么print()方法中的al,在某个时刻会被垃圾回收机制自动清除//main()函数中al的还存在} 接着打印al.get(1),那么结果就为2. 希望我的回答对你有帮助!
下面一段java代码的执行结果是什么?请大神解释一下执行顺序。
程序入口 Stem stem=new Stem(3);执行Stem的有参数构造函数;
而Stem继承了Root,构造函数中有super(1);所以进入执行Root的有参数构造函数;
执行完后返回Stem继续执行;
所以,最简单的理解:先执行父类构造,再执行本类构造;声明先于构造先执行;
运行结果:
Component1 construct
Component2 construct
Component3 construct
Root constructor
Component1 construct
Component2 construct
Component3 construct
Stem constructor
当前标题:分析下面的java代码段 看懂java代码
文章地址:http://azwzsj.com/article/hphpop.html