我在许多Android三星手机上遇到了动画速度变慢的问题。我已经追踪到了这个问题,它是太多的垃圾收集。但是,没有一个对象是由我的代码直接创建的。
这是来自DDMS中分配跟踪器的堆栈跟踪。
at com.samsung.android.multiwindow.MultiWindowStyle$1.createFromParcel(MultiWindowStyle.java:493)
at com.samsung.android.multiwindow.MultiWindowStyle$1.createFromParcel(MultiWindowStyle.java:491)
at
我正在使用Java中的数组,我有一个问题。我知道Java中的数组是相似数据类型的集合,如下所示:
int[] x = new int[]{1,2,3};
上面的声明可以读取为一个Integer数组,它是一个整数类型的集合。
请考虑以下内容:
Object[] x = new Object[]{1,2,3,"srk"};
在这里,我可以说上面的数组是不相似数据类型的集合,还是相似数据类型的Object数组,即对象?
我对此感到困惑和怀疑。在Java中,可以创建一个可以容纳不同数据类型的数组或任何类型的集合吗?
如果我在Java语言中有一个对象的ArrayList,那么底层实现真的只是一个对象引用数组吗?我正在创建这个方法:
//method returns all combinations of Objects
public ArrayList<ArrayList<Object>> getAllCombinations(ArrayList<Object> allObjects){
}
当我开始思考这个问题时,我想知道是否可以只返回一个ArrayList<ArrayList<Integer>>,其中int是allObjects中的位置(本质
早上好,我用java创建了这个课程:
public class MapPoint {
public MapPoint() {
this.tag = new String() ;
this.Id = 0 ;
}
public long Id;
public double lon;
public double lat;
public String tag;
}
但是,当我想在我的主函数中创建一个MapPoint数组时,如下所示:
public class mainTestClass {
public static voi
我正在做一项关于Java反射的学校作业。详情如下:
编写一个控制台程序,该程序向用户请求类名,加载该类并创建该类的实例。我们假设类有一个没有任何参数的构造函数。然后,程序输出所创建对象的公共变量的名称和值,以及不指定参数的公共方法的列表。程序应该让用户选择一个方法并在创建的对象上执行该方法。之后,程序应该再次显示带有它们的值的公共变量,并允许用户选择方法,等等。使用以下类测试您的实现:
公共类计数器{ public int c;公共空增量(){ c++;}公共空递减(){c-;}公共空重置(){c= 0;}
我遇到的问题与以下一句话有关:“不指定参数的公共方法列表”。是否有方法只列出没
Java noob问题:
考虑下面的C数组和初始化器代码:
struct {
int x;
int y;
} point_t;
point_t points[1000];
很简单。它是在加载时创建并分配内存的。
现在考虑Java中的类似情况:
public class point_t
{
public int x;
public int y;
}
point_t points[] = new point_t[1000];
// Without this loop, java will crash when you run this
for (int i=0; i<
关于java中的数组,我有一些问题:
在下面的表达式中创建了多少个对象?
(a) new int[0]:创建了一个对象,一个大小为0的数组。
(b) new int[2][2]:创建了一个对象,一个2行2列的数组。
(c) new int[2][]:没有创建对象?
我想知道我在表达式旁边的解是否正确。如果没有,希望你能帮助我,并给我一些解释。我真的不明白我应该做什么。
提前感谢!
我不是百分之百确定这个机制在起作用,所以我决定在这里发表进一步的澄清。
我正在做一个项目,应该处理Java中的大量数据(它必须是Java)。我希望它尽可能地高效。说到效率,我的意思是内存和速度计算应该放在第一位,可读性应该放在第二位。
现在我有两种存储数据的方法:创建一个MyObject数组
1) MyObject[][] V = new MyObject[m][n]
或者创建两个int数组:
2) int[][] V = new int[m][n]
3) int[][] P = new int[m][n]
显然,MyObject至少包含两个字段和一些方法。现在我注意到,当循环遍历MyObj
我对Java是个新手,当时我用Java创建了一个对象数组。
举个例子,我有一个A级-
A[] arr = new A[4];
但这只是创建指向A的指针(引用),而不是4个对象。这是正确的吗?我发现当我试图访问创建的对象中的函数/变量时,我得到了一个空指针异常。为了能够操作/访问对象,我必须这样做:
A[] arr = new A[4];
for (int i = 0; i < 4; i++) {
arr[i] = new A();
}
这是正确的还是我做错了什么?如果这是正确的,它真的很奇怪。
编辑:我觉得这很奇怪,因为在C++中,您只需输入A[4],它就会创建四个对象。
我在.Net环境中创建了一个对象数组,如下所示:
Dim names(2) As User
names(0) = New User("param1", "param2", "param3")
names(1) = New User("param1", "param2", "param3")
在这里,我创建了一个带有3个字符串变量的User类。我还使用相同的字符串变量在Java环境中创建了一个user类,这个类接受User[]用户。我基于Java类生成了webservice,并
我在运行循环时遇到了一些问题。我的目标是创建一个循环,允许用户在几行中填写彩票号码(用户可以决定他/她想要填写多少行,但它不能超过前面代码中指定的最大数量)。到目前为止,我的代码如下:
import java.util.Scanner;
public class LotteryTicket {
public LotteryRow[] rows;
public int numberOfRows;
public Player ticketOwner;
public LotteryTicket(int maxNumberOfRows) {
thi
C++:
Student* sp = new Student[10];
现在,请纠正我的错误。我相信这会创建一个由10个实例组成的数组,每个实例都调用默认构造函数,没有arguments.Please使用数组,也没有向量。
Java:
Student [] sa = new Student[10];
同样,如果我错了,请纠正我,但我认为在Java的情况下,在执行此语句时不会创建实例,而是只保留内存来保存对Student实例的10个引用。我们有必要采取以下行动:
sa[0] = new Student(*arguments*);
sa[1] = new Student(*arguments*);
在java中,我想问一个最让我困惑的问题。
当我们创建一个引用数组时。实际发生了什么?例如,我有
class A {
String name;
}
当我们创建像这样的数组时
A[] arr = new A[5];
。实际发生了什么?是否调用了构造函数?如果不是,那么内部会发生什么?
既然数组是对象,我们怎么也能做到这一点呢
interface G {
void disp();
}
G[] x = new G[5];
请帮我解除我的困惑。它阻碍了我进行许多其他操作。
我尝试用Java创建一个列表,如下所示。也许我对OOP和Java太天真了,所以我无法解决这个问题。
我需要创建一个下面的表格
Character Count Price
A 1 2
B 1 12
C 1 1.25
D 1 0.15
A 4 7
C 6 6
我已经创建了一个类,如下:
class ProductList {
private char ProductName;
private double Price
可能重复:
在C#中,当您创建一个新的数组(它是一个引用类型)时,它会将一个指针放在堆中的堆栈和对象本身上。如果使用简单的原语类型(如int、double等)创建这个数组,那么它所做的就是将值准确地放置在堆中,而不是将指针指向存储其内容的另一个堆地址。
那么,请有人解释一下在Java中是如何发生的吗?Java总是在数组中使用Integer (一个引用类型),还是像C#一样对待值类型?
int[] hello = new int[5];
hello[0] = 2; // C# put this value directly in same slot and doesn't
//c
我是Java新手,我刚刚处理过对象数组。我很好奇为什么Java需要我对数组使用以下语法
SomeClass[] object = new SomeClass[50]; // any positive integer works
object[2] = new SomeClass(some, parameters);
据我所知,新关键字为内存中的实例分配数据。我想知道为什么Java在这里两次使用新关键字。我认为它只需要在初始化对象时使用新关键字一次,而不是在声明对象时使用新关键字。所以,我的问题是:为什么Java在创建对象数组时两次使用新关键字?
下面是一个指向所讨论的代码的链接-
public static void main(String[] args) throws Exception {
out.println(VM.current().details());
List<Integer> al = new ArrayList<Integer>();
List<Integer> ll = new LinkedList<Integer>();
for (int i = 0; i < 1000; i++) {
Integer i
String s = "java";
s.substring(1); // ava
考虑到字符串的不变性,编译器不修改's',而是创建一个新对象,或者您可以说内存中有'java' as well as 'ava'的空间。
这个'ava'会发生什么,因为没有任何东西指向它,或者它没有被任何东西引用。
还有一个问题。如果我写了String s = new String("java"); // 'java‘不在字符串字面池中....
那么'ava‘是否会在字符串字面池中呢?
我的问题真的很简单(这并不意味着答案也会一样简单)。D)
为什么C++中的数组包含大小作为类型的一部分,而Java的不包括?
我知道Java数组引用变量只是堆上数组的指针,但是C++数组引用变量也是数组的指针,但我仍然需要提供一个大小。让我们首先分析C++:
// in C++ :
// an array on the stack:
int array[*constexpr*];
// a bidimensional array on the stack:
int m_array[*constexpr1*][*constexpr2*