2024-03-25 17:56:33 | 我爱编程网
实例化Integer涉及到整型数的自动拆装箱,在进行自动拆装箱时,编译器会使用Integer.valueof()来创建Integer实例
Integer.valueof()的源代码:
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
简单地解释这段代码,就是如果传入的int在IntegerCache.low和IntegerCache.high之间,那就尝试看前面的缓存中有没有打过包的相同的值,如果有就直接返回,否则就创建一个Integer实例。IntegerCache.low 默认是-128;IntegerCache.high默认是127.
所以当你的Integer值>-128 <127时 实例化的两个值是处于同一缓存位置,但超过这个范围,实例化的两个值就是两个不同的位置
而 == 的比较 只有等号两边的值为同一值.也就是在内存中是同一个 才会返回true 所以你要想比较两个值大小是否相等的话,需要使用.equals
public class Mystery {
/**
* @param String[] args 接收输入参数 args[0] args[1]
* @return void
*/
public static void main(String[] args) {
Changer c = new Changer();
c.method(args);
System.out.println(args[0] + " " + args[1]);
}
static class Changer {
/**
* 交换字符数组位置0和1的值
* 在java中,参数传递都是值传递
* 所以这里变量s和args的本身地址是不一样的
* 但是他们所指向的输入参数字符数组地址是一样的
*
* @param String[] s 要交换的字符数组
*/
void method(String[] s) {
String temp = s[0];
s[0] = s[1];
s[1] = temp;
}
}
}
输入:Mighty Mouse
存放的结构为:
参数对象:String[] {"Mighty", "Mouse"} 暂且命名为 args_obj(这个在java内部就是一地址)
变量args指向这个地址:args->args_obj
再调用method时,变量s指向args指向的地址:s->args_obj
故结果为:
[答案] 打印:Mouse Mighty
public class Pass{
/**
* 定义静态变量
* 意思就是说定义后,所有对j的修改都会保留下来
*/
static int j=20;
public static void main(String argv[]){
/**
* i 为局部变量,在方法内部调用后,外部值不发生变化
*/
int i=10;
Pass p = new Pass();
p.amethod(i);
System.out.println(i);
System.out.println(j);
}
/**
* 由于java传递参数是复制传递(值传递),故内部的x和外部的i是两个不同的变量
* 内部x的修改不会影响到外部的i变量
*/
public void amethod(int x){
x=x*2;
j=j*2;
}
}
[答案] 打印:10 40
我爱编程网(https://www.52biancheng.com)小编还为大家带来JAVA程序 请问这些程序运行结果是什么 新手刚开始学 谢谢的相关内容。
//第一个程序!
class P1 {
private int n = 9;
int nn;
P1() {
nn = n;
}
void ma() {
System.out.println("n=" + n);
}
public class TestC1 extends P1 {
public static void main(String[] args) {
P1 m1 = new P1();
System.out.println("m1.nn=" + m1.nn);
m1.ma();
}
}
//第二个程序
class TestC2 {
public static void main(String args[]) {
Thread First = new MyThread("A");
First.setPriority(Thread.MIN_PRIORITY);
Thread Second = new MyThread("B");
Second.setPriority(Thread.NORM_PRIORITY);
Thread Third = new MyThread("C");
Third.setPriority(Thread.MAX_PRIORITY);
First.start();
Third.start();
Second.start();
}
}
class MyThread extends Thread {
String message;
MyThread(String message) {
this.message = message;
}
public void run() {
for (int i = 0; i < 2; i++)
System.out.println(message + ":" + getPriority());
System.out.println(message + "" + getPriority());
}
}
//第三个程序
import java.awt.*;
import java.applet.*;
class cc {
static int n;
int nn;
static {
n = 20;
}
cc() {
nn = n;
}
}
public class TestC3 extends Applet {
public void paint(Graphics g) {
cc m = new cc();
cc m1 = new cc();
g.drawString("m1=" + m1.nn, 20, 50);
g.drawString("m=" + m.nn, 20, 90);
}
}
如下java程序运行后会得到什么结果?为什么请详细点讲解。。。谢谢1、得到的结果应该是如下before241145153after1234514152、因为你在第一个for循环之后调用的ddd()方法,然后把数组a的引用传给了方法ddd(),然后在在方法ddd()之中调用了swap()方法,其中的三个参数和下面声明的swap()方法中的参数是对应的。。且在方法swap()
java程序运行结果是什么?classAnimal{publicAnimal(){super();System.out.println("我是动物");}}classCatextendsAnimal{Cat(){super();System.out.println("我是猫");}}classPersiaCatextendsCat{publicPersiaCat(){super();Syst
我用java编写了一个程序,为啥运行不显示结果,求大神看看!我改的,你参考下:importjava.util.Scanner;publicclassa1{ publicstaticvoidmain(Stringargs[]){ Scannersr=newScanner(System.in);doublea[]=newdouble[8];for(inti=0;i<
如何在cmd下执行java程序?谢谢如图新建一个hello.java文件,写上你的代码。2.在文件的目录下打开cmd,输入命令javachello.java3.编译成功会生成hello.class文件4.运行编译好的文件,输入命令javachello(不需要文件后缀)。拓展:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里
java求以下程序的运行结果第一题是s=2+4+6=12考察do……while循环体和continue第二题是求数组中3的倍数的和,30+60+90=180第三题是考察try……catch语句的运用。定义了5个长度的数组,却在第十一个位置添加元素,导致数组越界。因此输出:“超出数组范围!*****异常处理结束!”以下Java程序的运行结果是()。C.运行正常,没
用eclipse怎么运行Java小应用程序,需要具体步骤?谢谢!1.编写代码2.保存(默认自动编译)3.运行运行方法一:在代码上单击右键,选择Run As --> Java Application运行方法二:在左侧包视图中选中包含main的类,右键 Run As --> Java Application运行方法三:直接点击界面上方的图标如何让
java中没错,就是运行不出结果!!!求教!!!!!1.把publicclassdrawstring{及最后一行大括号去掉2.把publicvoidmain(String[]args)改为publicstaticvoidmain(String[]args)3.java文件名要改为DrawString.java可以了。java程序运行,不显示结果,我刚装的jdk,运行所有程序
安装Java时提示“关闭程序,以便继续”。要求我结束的程序名称是“开始”。请问怎么办。开始,是指电脑的资源管理器,也就是我们的桌面了。打开任务管理器,在“进程”中找到Explorer.exe“结束进程”终止它,等安装过程继续之后再从任务管理器中的"文件“》新建任务》输入explorer.exe.出现这个错误,有可能是你刚刚卸载了以前的Java,它的DLL需要你重启电脑才能删除掉,重
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-09-10 08:50:00