标签: object-reference

理解为什么/如何在连续的排序上优化Java的int数组的本地排序...所以我可以阻止它

我的程序简而言之:

我有一个程序,连续运行几个排序算法对一组int,每个计时.GUI允许用户选择数组大小和各种随机数范围,用于填充要排序的数组.每次单击"排序"按钮都会获取用户的数组值,构造一个新数组,然后使用创建每个排序算法的数组克隆.clone().

问题:

当点击"排序"按钮时,排序第二次改进自己.

在某处我发现了一些我不理解的优化.

这是一个问题的原因:如果用户没有更改他们的数组设置并再次运行排序方法,新的数组构造新的随机数,但随机数范围保持相同,所以运行时间,超过125k的列表,应保持大致相同....不提高300%.

所以这是我面临的演示程序.它只使用一种,Java的本机类来证明这个问题.它还使用硬编码值来构造要排序的随机int数组 - 但每次"输入"按下都会这样做.我认为这个模拟准确地反映了我的程序,因为同样的"错误"也在这里发生.

为什么第二次排序更快?

...每次运行都会使用新值重建数组,那么它如何变得更快?

package sortTooFast;

import java.util.Arrays;
import java.util.Scanner;

public class SortTooFast {
    public static final int ARRAY_SIZE = 500000;
    public static final int MIN_RANGE = 0;
    public static final int MAX_RANGE = 100;
    public static final int INCLUSIVE = 1;

    int[] sortingArray;

    public static void main(String[] args) {
        SortTooFast test = new SortTooFast();
        test.run();
    }

    // Run program.
    public void run(){
        while(true){    

            // Assign int[] filled with random numbers. …
Run Code Online (Sandbox Code Playgroud)

java sorting optimization null object-reference

3
推荐指数
1
解决办法
789
查看次数

Java中的Linkedlist实现看起来像在C++中的linkedlist

我正在浏览LinkedList并看到了Java中的实现.回到我尝试并实现链接列表的日子里,它有指针和地址以及大量的努力工作.使用Java,实现更容易,但仍然需要我做一些事情.我从链接列表中了解到链接列表,其中1,2,3,4是链表的节点. 在此输入图像描述

但是在java中,我遇到的代码让我将LinkedList视为下图.在此输入图像描述

Java中链表的实现代码如下,

class LinkedListNode
{
    LinkedListNode nextNode = null;//consider this member variable
    int data;
    public LinkedListNode(int data)
    {
        this.data = data;
    }
    void appendItemToLinkedList(int newData)
    {
        LinkedListNode end = new LinkedListNode(newData);
        LinkedListNode temp = this;
        while (temp.nextNode != null) { temp = temp.nextNode; }
        temp.nextNode = end;

    }
}
Run Code Online (Sandbox Code Playgroud)

public static void main(String[] args) 
    {
        LinkedListNode list = new LinkedListNode(10);
        list.appendItemToLinkedList(20);
        list.appendItemToLinkedList(30);
        list.appendItemToLinkedList(40);
        list.appendItemToLinkedList(50);
        list.appendItemToLinkedList(60);
    }
Run Code Online (Sandbox Code Playgroud)

在图中,您可以清楚地看到节点对象位于其他节点对象内.它真的是一个链表.或者是一个容纳其他容器的父容器,依此类推?

c++ java linked-list object-reference

3
推荐指数
1
解决办法
202
查看次数

比较两个对象引用的常见情况

除了检查null(something == null)我们何时在Java中使用对象引用比较?

我想不出任何使用对象引用比较的情况.对于我来说,抽象所有内存分配的语言似乎有点奇怪.

java comparison object object-reference

3
推荐指数
1
解决办法
80
查看次数

Javascript是否等同于引用对象或克隆它们?

MyApp.something.BigObject我有一个内存昂贵的对象,我喜欢这样做var theObject = MyApp.something.BigObject;.我的问题是会占用双倍的记忆吗?

javascript memory-management object-reference

2
推荐指数
1
解决办法
681
查看次数

在字节数组中存储对象引用

我有一个字节数组和一个对象引用.

    byte[] data = new byte[128];

    Block b = new Block();
Run Code Online (Sandbox Code Playgroud)

我想在"data"数组的最后2(或4)个字节中存储引用b .

请注意:我不想序列化对象并存储在字节数组中.我需要存储一个引用新块的指针(引用).

编辑

我的Block类如下

    public class Block {
        byte[] data ;

        public Block(){
            data = new byte[128];
        }
}
Run Code Online (Sandbox Code Playgroud)

基本上,数据数组将使用126个字节来存储字符串,并使用最后两个(或4个)字节来存储对另一个块的引用.它的链接列表.

我本可以使用Block类的不同定义[通过在类本身中包含对Block的引用]来完成它.但是问题语句指出只有最后2个字节的约束应该用作对另一个块的引用.从其他帖子我开始知道在jvm(32位)中,引用的大小为4个字节.因此我认为它只能使用最后4个字节来完成

来自问题陈述的片段

块的最后2个字节用于指向下一个块.假设文件是​​8块大小,那么第4块的最后2个字节将指向第5块,第5块的最后2个字节指向第6块,依此类推.

java memory arrays byte object-reference

2
推荐指数
1
解决办法
2162
查看次数

"对象引用未设置为对象的实例"错误

我有问题弄清楚为什么我接收"未设置为对象实例的对象引用"此表示层中的错误:

TempAccountManager.Accounts.Add(tempAccount);

我已经使用Visual Studios调试器和帐户获取创建了代码.我相信我有一个访问模块的问题,不确定.

表达层

using myBudget.BusinessObject;
using myBudget.BusinessLogic;

namespace myBudget
{
    public partial class NewBudgetWizard : Form
    {

        public int CurrentStep { get; set; }

        public Account TempAccount = new Account();
        public AccountManager TempAccountManager = new AccountManager();

        public NewBudgetWizard()
        {

        private void createAccountList(ListView lvAccounts)
        {

            foreach (ListViewItem lvi in lvAccounts.Items)
            {

                int tempAccNumber = Int32.Parse(lvi.SubItems[0].Text);
                string tempAccName = lvi.SubItems[1].Text;
                string tempAccType = lvi.SubItems[2].Text;
                decimal tempAccBalance = decimal.Parse(lvi.SubItems[3].Text, System.Globalization.NumberStyles.Currency);

                Account tempAccount = new Account(tempAccNumber, tempAccName, tempAccType, tempAccBalance, DateTime.Now);
                TempAccount = …
Run Code Online (Sandbox Code Playgroud)

c# oop access-modifiers object-reference nullreferenceexception

2
推荐指数
1
解决办法
2541
查看次数

对象引用未设置为部署到云时出现的对象错误的实例

本地项目运作完美.它正在执行,数据库中有适当的条目.但是当我在暂存时将它部署到云时,它会将此错误作为未设置为实例的对象引用.我的项目需要每个Web和辅助角色的2个实例,但由于我有一个限量版的免费实例,我每个只使用一个.这可能是个问题吗?我使用SDK 1.8它是ASP.Net项目.

任何人都可以建议我如何解决这个问题?

cloud instance azure object-reference nullreferenceexception

2
推荐指数
1
解决办法
3803
查看次数

将一个原始变量分配给另一个原始变量与另一个原始变量分配

我想了解原始和对象引用变量的行为方式有何不同.我使用了Kathy Sierra的OCA/OCP Java SE7中的以下代码作为示例:

public class VariableTesting {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("a= " + a);

        int b = a;
        b = 30;
        System.out.println("a= " + a + " after change it to b and b is " + b);

        Dimension a1 = new Dimension(5, 10);
        System.out.println("a1.height = " + a1.height);

        Dimension b1 = a1;
        b1.height = 30;

        System.out.println("a1.height= " + a1.height + " after change to b1");
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我得到了a …

java object-reference primitive-types

2
推荐指数
1
解决办法
4987
查看次数

字符串连接时Java字符串池的工作原理是什么?

注意:我不是要比较角色是否等于.因为我知道如何使用String.equals()方法.这个问题是关于字符串引用的

当我开始学习类字符串及其属性作为不变性等时,我正在学习OCA考试.根据我读到或可能理解的字符串池是在创建字符串时,Java将此对象存储在他们调用的内容中字符串池,如果创建一个具有相同值的新字符串,它将引用字符串池上的字符串,除非我们使用new关键字,因为这会创建一个新引用,即使两个字符串包含相同的值.

例如:

String a = "foo";
String b = "foo";
String c = new String("foo");
boolean ab = (a == b); // This return true
boolean ac = (a == c); // This return false
Run Code Online (Sandbox Code Playgroud)

要清楚这段代码是在第一行代码中创建String a = "foo"并将其存储在String池中,而在第二行代码中它将创建String b和引用,"foo"因为它已存在于String池中.但是第3行将创建此字符串的新引用,无论它是否已存在.这是一个关于发生了什么的图形示例: http://cdn.journaldev.com/wp-content/uploads/2012/11/String-Pool-Java1.png

问题出现在以下代码行中.当串联创建字符串时,java会做出不同的东西或简单= =比较器有另一种行为吗?

例A:

String a = "hello" + " world!";
String b = "hello world!";
boolean compare = (a == b); …
Run Code Online (Sandbox Code Playgroud)

java string object-reference string-comparison string-pool

2
推荐指数
1
解决办法
2453
查看次数

离子2:将参数作为副本传递给下一页,而不是通过引用

问)如何将我的参数作为副本传递给下一页,以便在返回时不会在前一个屏幕中保留对它的更改?

例如

  showDetails(item) {
    this._nav.push(PersonDetailsPage, {
      person: item
    });    
  }
Run Code Online (Sandbox Code Playgroud)

因此,当我查看PersonDetailsPage时,我希望能够进行更改,取消,返回并不修改原始对象。

谢谢。

copy object-reference typescript ionic2 angular

1
推荐指数
1
解决办法
2602
查看次数