小编Sai*_*S.R的帖子

Java中字符串池的基础机制?

我很好奇,为什么字符串可以在不调用创建new String(),作为API提到它是Objectclass java.lang.String

那么我们如何才能使用String s="hi"而不是String s=new String("hi")

这篇文章澄清了==运算符的使用和缺席,new 并说这是由于String文字被实际内容或从文字池中获取JVM,因此Strings是不可变的.

看到诸如此类的陈述

String s="hi"
Run Code Online (Sandbox Code Playgroud)

第一次真正发生了什么?

  1. 是否JVM像这样替换它String s=new String("hi"),其中创建了一个Object并将"hi"其添加到String文本池中,因此后续调用如String s1="hi"从池中获取?

  2. 这是底层机制的运作方式吗?如果是的话,那就是

    String s=new String("Test");
    String s1="Test";
    
    Run Code Online (Sandbox Code Playgroud)

    同样的

    String s="Test";
    String s1="Test";
    
    Run Code Online (Sandbox Code Playgroud)

    在内存利用率和效率方面

  3. 另外,有什么方法可以访问字符串池来检查它中有多少String文字,占用了多少空间等等?

java string performance jvm pool

23
推荐指数
5
解决办法
1826
查看次数

当从javascript访问时,HTML输入类型="数字"仍然返回一个字符串

我是javascript的新手,我正在尝试学习JS中的函数等,并尝试添加2个数字

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>JS ADD</title>
</head>

<body>

  <h1>Funcitons is JS</h1>


  <input type="number" id="num1">
  <input type="number" id="num2">

  <button type="button" onclick="addNumAction()">
    Add
  </button>

  <script>
    function addNum(n1, n2) {
      return parseInt(n1) + parseInt(n2);
    }

    function addNumAction() {
      var n1 = document.getElementById("num1").value;
      var n2 = document.getElementById("num2").value;

      var sum = addNum(n1, n2);
      window.alert("" + sum);

    }
  </script>

</body>

</html>
Run Code Online (Sandbox Code Playgroud)

如果我删除parseInt(),该值只被视为字符串,那么使用的是<input type="number">什么?请向我解释.用什么字段来输入数字?

html javascript numbers input web

23
推荐指数
6
解决办法
2万
查看次数

如何从工具栏中删除应用标题?

我无法弄清楚如何删除我的标题.我在我的代码中使用了以下代码,MainActivity但在添加该行之后,我的应用程序崩溃了.

getSupportActionBar().setDisplayShowTitleEnabled(false);
Run Code Online (Sandbox Code Playgroud)

以下是我的MainActivity的外观:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

完整代码:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        setContentView(R.layout.activity_main);
        setTheme(R.style.CustomTheme);
Run Code Online (Sandbox Code Playgroud)

android

19
推荐指数
3
解决办法
3万
查看次数

如果没有显式调用'actionPerformed'方法怎么调用呢?

我刚开始用Swing学习GUI,并不完全理解该actionPerformed方法的工作原理.请考虑以下代码:

//code to create a button and change its text when clicked
public class simplegui implements ActionListener {
  JButton button;

  public static void main(String[] args) {
    simplegui gui=new simplegui();
    gui.go();
  }

  public void go() {
    JFrame frame=new Frame();
    button=new JButton("click Me");
    button.addActionListener(this);

    frame.getContentPane().add(button);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300,300);
    frame.setVisible(true);
  }

  public void actionPerformed(ActionEvent event) {
    button.setText("I've been clicked!");
  }
}
Run Code Online (Sandbox Code Playgroud)

在引发方法之前,不应该为类创建对象(静态方法除外)?

单击该按钮时会actionPerformed调用该方法,但如何?电话在哪里?我已经实现了接口ActionListener,但是代码知道当一个动作发生时,'ActionEvent'对象应该被发送到'actionPerformed'方法?它出现在Button类中吗?该addActionListener方法是否存在于Button类中?

单击按钮时,系统调用操作如何执行以及执行的代码在gui.actionPerformed()哪里?

我一直遵循旧的OO,静态等Java概念,但这整个事件驱动编程令人困惑.

java methods events user-interface swing

10
推荐指数
2
解决办法
2万
查看次数

为什么我们不能只使用数组而不是varargs?

我只是在varargs学习android(doInBackground(Type... params))时遇到过,SO帖子澄清了它的用法

我的问题是为什么我们不能只使用数组代替 varargs

public void foo(String...strings) {  }
Run Code Online (Sandbox Code Playgroud)

我可以通过在数组中包装我的可变数量的参数并将其传递给像这样的方法来替换这种类型的调用

public void foo(String[] alternativeWay){  }
Run Code Online (Sandbox Code Playgroud)

也不会main(String[] args)在Java中使用varargs,如果不是我们如何能够通过运行参数,它

请建议好处或使用,varargs是否还有其他重要的事项需要了解varargs

java arrays android variadic-functions

10
推荐指数
2
解决办法
2050
查看次数

关闭 css 的单独块,vue cli 3 webpack 4

我正在使用一个用最新版本的 vue cli 3 创建的项目。我使用的是默认配置,我的路由器有许多动态导入的路由。在生产中运行时,我的 css 和 js 都被分成多个块。虽然 js 的行为是可取的。我的 css 文件很小我想关闭 css 的块。

如何通过 vue.config.js 文件配置 webpack 以执行此操作。请帮助提供确切的命令,因为我发现 webpack 配置和链语法非常混乱。谢谢:)

vue.js webpack-4 mini-css-extract-plugin vue-cli-3

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

Android工作室预览窗格不能渲染ActionBar?

我正在运行最新版本的android studio,问题是当使用任何AppCompat主题时,预览窗格不呈现ActionBar,如果我更改预览窗格的主题它工作正常(不更改实际主题),但是这样做是否有任何不足之处,

我的styles.xml如下

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

当预览窗格设置为AppTheme时,ActionBar不会显示,但它在我的设备和AVD中工作正常,

没有显示操作栏

如您所见,这使得调试和测试ActionBar变得困难

请提出一些修复方法,以及AppCompat主题与普通主题有何不同?我只是一个Android初学者.

谢谢!

android android-theme android-actionbar android-studio android-styles

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

如何使toString()方法返回Super Class私有字段及其实例字段?

有没有办法让toString()包括超级私人领域class?我尝试添加一个super.toString(),但没有用.

请参阅下面的代码

Employee.java

package test;

public class Employee {

private  String name;
private int id;
private double salary;

public Employee(String name, int id, double salary) {
    super();
    this.name = name;
    this.id = id;
    this.salary = salary;
}

public double getSalary() {
    return salary;
}

@Override
public String toString() {
    return "Employee [name=" + name + ", id=" + id + ", salary=" + salary
            + "]";
}

public static void main(String[] args) {

    Employee …
Run Code Online (Sandbox Code Playgroud)

java eclipse inheritance tostring auto-generate

6
推荐指数
2
解决办法
3万
查看次数

Apple是否已发布触摸条API?

Apple刚推出了带触摸条的新款MacBook.是否有应用开发者可以使用的API?我似乎无法找到任何在线.

它是否支持通过JavaScript从浏览器访问?WebKit有四个触摸触控板支持强制触摸API,所以我猜它如果发布这个也会非常有用.还有什么事吗?

另外如何调试和测试触摸条功能,是否有一些'MAC EMULATOR'的东西?

javascript browser dom-events nstouchbar

6
推荐指数
2
解决办法
7150
查看次数

应用程序在样式下更改主题时崩溃

我的安卓应用:

目标 AP I:22

最小 API : 15

设备运行于:API 级别22

我不明白整个主题概念,

在我的manifest.xml,我已经设置 android:theme="@style/AppTheme"

并且所有活动都使用这个主题

现在我的理解是,他们都使用名为的主题AppTheme,我现在可以通过在我的内部扩展其他主题来定义styles.xml

在我的 styles.xml

我有这个

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

我的理解是, AppCompat主题也允许我们在旧设备上使用更新的(比如材料主题)。我在 API Level 22 和 API Level 15 上运行这个应用程序,它工作正常

现在当我把它改成

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Material">
        <!-- Customize your theme here. -->
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

它给出了一个警告,说这个主题只能在 API 21 或更高版本上使用,这是正确的,现在当我忽略警告并在 API 22 上运行它时,它会崩溃。为什么?

我还尝试将 …

android android-compatibility android-theme android-studio android-styles

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