这个表达式的意思是 :假如a大于b则表达式执行问号后面的表达式(如果是的话)并返回该值a,假如a不大于b则执行冒号后面的表达式b并返回b
举例:String value = 5>4"大于4":"5不大于4";这里处理结果是value="大于4"
第1题应该是:
false
false
因为:
1
==和equals都是返回boolean类型的值(只可能是true或false)
2
==是比较引用是否相等,显然b1和b2并不是引用的同一个对象。
3
B类并没有覆盖Object类的equals方法,因此调用的是继承自Object类的equals方法,而Object类的这个方法也是比较的引用。
第7题应该是:
in Second class
in Second class
因为子类覆盖了父类的aMethod方法,父类的构造方法中调用的aMethod是子类的。
当用“+”连接一个对象的时候,会隐式地调用该对象的toString方法。由于Variable对象没有重写toString方法,那么将使用基类Object的toString方法:
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at
标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass()getName() + '@' + IntegertoHexString(hashCode())
题目意思是问你要运行哪写步骤:
如果你输入的A,那么肯定捕获异常,因为要求输入的是整数
如果:你输入是A 会捕获InputMismatchException e
也就是会执行:
Systemoutprintln("----Flag 3 ----");
Systemoutprintln("输入数据格式错,要求是整型!");
Systemoutprintln("----Flag 4 ----");
接下来是:
Systemoutprintln("----Flag 5 ----");
Systemoutprintln("执行完毕!");
Systemoutprintln("----Flag 6 ----");
如果你输入的是3:
会执行下面这些:
打印一个C,不会越界,因为i-1 了, 3-1=2所以是C
Systemoutprintln("----Flag 2 ----");
Systemoutprintln("----Flag 5 ----");
Systemoutprintln("执行完毕!");
Systemoutprintln("----Flag 6 ----");
刚才修改了下输入3的后果,代码有点乱没仔细看,你还有一个数组存在
一、JConsole是什么
从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。
二、如何启动JConsole
如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole 即可。
如果从 GUI shell 启动,找到 JDK 安装路径,打开 bin 文件夹,双击 jconsole 。
当分析工具d出时(取决于正在运行的 Java 版本以及正在运行的 Java 程序数量),可能会出现一个对话框,要求输入一个进程的 URL 来连接,也可能列出许多不同的本地 Java 进程(有时包含 JConsole 进程本身)来连接。如图所示:
想分析那个程序就双击那个进程。
三、如何设置JAVA程序运行时可以被JConsolse连接分析
本地程序(相对于开启JConsole的计算机),无需设置任何参数就可以被本地开启的JConsole连接(Java SE 6开始无需设置,之前还是需要设置运行时参数 -Dcomsunmanagementjmxremote )
无认证连接 (下面的设置表示:连接的端口为8999、无需认证就可以被连接)
Java代码
-Dcomsunmanagementjmxremoteport=8999 \
-Dcomsunmanagementjmxremoteauthenticate=false \
-Dcomsunmanagementjmxremotessl=false
-Dcomsunmanagementjmxremoteport=8999 \ -Dcomsunmanagementjmxremoteauthenticate=false \ -Dcomsunmanagementjmxremotessl=false
做了比较详细的注释,不知能否解决你所有的疑惑
class Value {
public int i = 15;
}
public class Test {
public static void main(String argv[]) {
Test t = new Test();
tfirst();//从这句开始看执行流程,进入first方法
}
public void first() {
int i = 5;
Value v = new Value();
vi = 25;
second(v, i);//这里调用second,所以要先去second方法中看继续执行什么
Systemoutprintln(vi);//此处的v是实参,依然引用的是这里创建的Value对象
//但是second方法中对vi设置了新的值20,所以输出是20
}
public void second(Value v, int i) {
i = 0;
vi = 20;
Value val = new Value();
v = val;//参数v指向了新的Value对象val,所以下面输出的vi就是vali的值是15
Systemoutprintln(vi + " " + i);//i的值在这个函数的第一行代码处被设置成了0,所以输出是0
//second方法执行完毕,该回到first方法中调用它的地方看继续执行什么
}
}
return 的功能和用法一楼讲的很清楚。
我用网上搜到的例子解释一下:
比如你写了一个叫getInt的类
public int getInt(){
//这个类的意思就是一个具有返回值类型为int的类了
//通常如果不需要返回值的话 这里就写void
。。。。//你的具体代码
return 一个int型的变量;
}
返回值是必须有的,作用就是把固定不变的。常用的代码封装起来 写在类里 每次用到的时候就调用就行了 如果需要这个共能返回一个值,甚至一个对象 就需要用返回值了就是用return来把把值返回给调用的者
例子
public static String getName()
{
//我们要把姓名后面加上一个"vip"
String aa="飞龙在天";
aa+="vip";//这个知道吧 原有字符串加上=后面的字符串
return aa;
}
这样的话 在调用的地方直接用getName()
那么得到就是飞龙在天vip了
明白用法了吧
renturn还有一个用处就是结束当前域的 *** 作
一个类就是一个域 如果你在声明类的时候没有设置返回值 就是用的void 那么如果你在该类的任意位置写下return 那么代码运行到此处就不再往下走了 跳出这个类 继续运行下面的 *** 作
这个常用来做判断
例如
public void bb()
{
for(int i=0;i<12;i++)
{
int j=i+2;
if(j=5)
{
return;
}
}
}
这样当循环到第4此的时候 i=3 那么j就等于5了 根据条件判断 return 就跳出循环,跳出bb()这个类了 明白了吗
2 然后是程序分析
程序分析,如果你能清楚这个程序运行过程中内存的调度情况的话,任何一个程序你都会清楚他的运行过程和结果。
1) 创建,employee 对象。在栈内存中分配一个变量employee ,指向堆内存中创建的Employee 对象。(此处Emplyoee 继承自Person 自己没有重写构造方法,调用父类的构造方法。父类中,程序员没有写构造方法,系统自动分配一个空的构造方法。因此此处创造出来的对象是没有赋任何值的。)
2)执行接下来两条条类似语句。在Employee 类中没有此方法,因此到父类中寻找。在栈内存中分配 name和age变量,储存"Mary","20"。然后调用方法完成赋值。方法执行完成之后,name 变量,age 变量消失。
3)执行setSalary方法,栈内存中分配变量salary,传值2000 ,然后执行方法完成赋值后,salary 变量消失。(此方法是Employee 类自有的。)
4)因为Employee 重写了父类的getInfo 方法。因此调用自己的方法,过程类似,也是在栈内存中分配变量储存getName,getAge,的返回值和salary值。然后输出结果,方法执行完成之后,这几个变量消失。
下面是内存分配的图,你看看吧。
灰色的表示方法执行完之后就释放消失了。
(另:刚开始学java ,会有很多不懂得东西,我也是初学者,只能说多读多写程序了,加油吧!!!)
以上就是关于java程序分析(a>b)a:b全部的内容,包括:java程序分析(a>b)a:b、java程序分析题、java程序运行结果分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)