我被困在一件简单的事情上.我有一系列名为"标签"的布尔值.能够通过布尔值访问数组的每个元素对我来说很重要:
public boolean energetic, calming, happy, sad;
public boolean[] trackTags = {energetic, calming, happy, sad};
Run Code Online (Sandbox Code Playgroud)
我传入并为trackTags数组分配布尔值(让我们说[true,true,true,false].所以,当我调用trackTags [0]时,我得到"真实".但是,当我打印"精力充沛"时 -它应该与trackTags [0]相同,值总是为false.我知道布尔值初始化为false,但是当我在trackTags数组中切换某些值为"true"时,命名元素是否也不会改变?
第二个问题:对于我与布尔变量名称交互的好方法是什么?具体来说,如果我传入一个String [] [happy,sad],然后只想切换对应于我的String数组中名称的boolean []值,这是否可行?我在循环遍历两个数组的元素时没有问题,但我显然无法将字符串与布尔值进行比较.
总而言之,是否有更好的方式与布尔名称进行交互?我真的很困惑.
public abstract class Class1 {
protected static Object object1 = null;
protected static Object object2 = null;
public static Object[] objects = { object1, object2 };
public static void main(String[] args) {
new Class2();
for (Object o : objects) {
System.out.println(o);
}
}
}
public class Class2 extends Class1 {
public Class2() {
Class1.object1 = new String("String 1");
Class1.object2 = new String("String 2");
}
}
Run Code Online (Sandbox Code Playgroud)
这输出:
null
null
Run Code Online (Sandbox Code Playgroud)
为什么?
当我创建一个新实例时Class2,该类的构造函数初始化object1和object2.
objects据我所知,包含对这些对象的引用.所以在他们初始化之后,我期待任何东西,但是无效.
有人能解释一下吗 谢谢.
我为测试类创建了两个对象,在那里我传递了值10 and 20,当我将第二个对象传递给测试构造函数时。它返回我0 0而不是40, 4作为输出。谁能解释我为什么会这样?
class Test{
public int a,b;
Test(){
a=-1;
b=-1;
}
Test(int i,int j){
a=i;
b=j;
}
void mest(Test o){
o.a*=2;
o.b=2*2;
}
Test(Test ob){
ob.a*=2;
ob.b=2*2;
}
}
public class Main{
public static void main(String[] args){
Test t = new Test(10,20);
System.out.println(t.a +" "+ t.b);// 10, 20
t.mest(t);
System.out.println(t.a +" "+ t.b);// 20, 4
Test t2 = new Test(t);
System.out.println(t2.a +" "+ t2.b); // 0 , 0
}
}
Run Code Online (Sandbox Code Playgroud) 为什么以下代码返回100 100 1 1 1而不是100 1 1 1 1?
public class Hotel {
private int roomNr;
public Hotel(int roomNr) {
this.roomNr = roomNr;
}
public int getRoomNr() {
return this.roomNr;
}
static Hotel doStuff(Hotel hotel) {
hotel = new Hotel(1);
return hotel;
}
public static void main(String args[]) {
Hotel h1 = new Hotel(100);
System.out.print(h1.getRoomNr() + " ");
Hotel h2 = doStuff(h1);
System.out.print(h1.getRoomNr() + " ");
System.out.print(h2.getRoomNr() + " ");
h1 = doStuff(h2);
System.out.print(h1.getRoomNr() + " …Run Code Online (Sandbox Code Playgroud) 当我拿一个数组时,像这样:
int anArray[] = new int[5];
//initialize to 0
doStuff(anArray);
//inside doStuff
anArray[3] = 731;
//passes back to main
System.out.println(anArray[3]); // outputs 731
Run Code Online (Sandbox Code Playgroud)
这不是通过参考传递的吗?是什么赋予了?
我有一个
private Map<String,List<ProductScheme>> discountMap = new HashMap<String,List<ProductScheme>>();
Run Code Online (Sandbox Code Playgroud)
现在,如果我从列表中获取列表discountMap并在列表中添加项目,我将不得不重新列入列表,discount map否则将不需要?
可能重复:
Java是"传递引用"吗?
如果我们有大byte[]数组(如40Mb),我们想用方法发送它
method(array);
Run Code Online (Sandbox Code Playgroud)
数组会被复制吗?因此,Java env => 80Mb内存将增加另外40Mb ,对吗?
如果是,我们如何在调用方法后销毁'first'数组?
如果我实例化一个对象并将其传递给一个函数,在这个函数中我将该对象赋值为null.似乎从函数返回时,对象仍然存在.
我只想知道何时分配null,会发生什么.
我在Java中被告知我应该避免修改原始参数,例如
public int doStuff(int begin, int end) {
/* loop or something */
begin++; //bad
end--; //also bad
/* end loop */
return
}
Run Code Online (Sandbox Code Playgroud)
相反,我应该做点什么
public int doStuff(int begin, int end) {
int myBegin = begin; //something like this
int myEnd = end;
/* stuff */
return
}
Run Code Online (Sandbox Code Playgroud)
所以,我一直在用lua做这件事
function do_stuff(begin, last)
local my_begin = begin
local my_last = last
--stuff
my_begin = my_begin + 1
my_last = my_last - 1
--stuff
end
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否
function do_stuff(begin, last)
--stuff
begin = …Run Code Online (Sandbox Code Playgroud) 我有三个ArrayLists:
一个用于按照输入的顺序存储用户输入,位于主类中.
第二个与第一个完全相同,但它被传递给一个remTrip被复制的方法并返回结果.
第三个是list1在下面的代码中,这是正在处理的代码.
public static ArrayList<String> remTrip( ArrayList<String> a){
//code here
ArrayList<String> list1 = a;
Collections.sort(list1);
//code to remove triplicates from the list and returns the result
}
Run Code Online (Sandbox Code Playgroud)
我想保持第ArrayList<String>一个按照它的顺序(即{"dog", "cat" , "tiger", "cat", "cat"}),但显然是对Collections.sort()所有ArrayLists 进行排序.
我如何只对列表中的一个进行排序而不对其他列表进行排序?