相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

在Java中适用时使用"final"修饰符

在Java中,有一种做法是声明每个变量(本地或类),如果确实是参数final.

虽然这使得代码更加冗长,但这有助于轻松阅读/掌握代码,并且还可以防止错误,因为意图已明确标记.

您对此有何看法,您对此有何看法?

java oop

189
推荐指数
11
解决办法
6万
查看次数

方法参数中的final关键字

我经常遇到如下所示的方法:

public void foo(final String a, final int[] b, final Object1 c){
}
Run Code Online (Sandbox Code Playgroud)

如果在不传递最终参数的情况下调用此方法会发生什么.即稍后更改的Object1(因此未声明为final)可以很好地传递给此方法

java final

146
推荐指数
5
解决办法
13万
查看次数

为什么在Java中将局部变量和方法参数标记为"final"?

在Java中,您可以使用final关键字限定局部变量和方法参数.

public static void foo(final int x) {
  final String qwerty = "bar"; 
}
Run Code Online (Sandbox Code Playgroud)

这样做会导致无法在方法体中重新分配x和qwerty.

这种做法使你的代码向不变性的方向推动,这通常被认为是一个加分.但是,它也会使代码混乱,"最终"出现在各处.您对Java中的局部变量和方法参数的final关键字有何看法?

java final

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

为方法参数分配新值是否有问题?

Eclipse有一个选项可以警告赋值给方法的参数(在方法内),如:

public void doFoo(int a){
   if (a<0){
      a=0; // this will generate a warning
   }
   // do stuff
}
Run Code Online (Sandbox Code Playgroud)

通常我尝试激活(并注意)几乎所有可用的编译器警告,但在这种情况下,我不确定它是否值得.

我看到了改变方法中参数的合法情况(例如:允许参数"取消设置"(例如null)并自动替换默认值),但很少会导致问题,除非它可能有点混淆在方法中间重新分配参数.

你使用这样的警告吗?为什么/为什么不呢?

注意:

避免这种警告当然等同于制作方法参数final(只有这是编译器错误:-)).那么这个问题为什么我要在Java中的方法参数上使用关键字"final"?可能是相关的.

java eclipse compiler-warnings

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

调试变量时遇到问题可能没有初始化错误

我在档案中看到了很多类似的问题,但我找不到像我遇到的问题那样的场景.

以下是我的代码.我遇到了"finalPrice"错误,"grandTotalPrice"可能尚未初始化.代码行是在程序的最后.

应通过上面的控制台输入为变量分配总数.我不确定错误是什么,或者为什么.任何人都可以帮助我,解释一下吗?

码:

import java.util.*;


public class PictureFrames
{

    static Scanner console = new Scanner(System.in);

    static final double REGULAR_FRAME = .15, FANCY_FRAME = .25;
    static final double COLOR = .10, CARDBOARD = .02, GLASS = .07, CROWNS = .35;


    public static void main (String[] args)
    {

    double length, width, area, perimeter; 
    double priceOfFrame, priceOfColor, priceOfCardboard, priceOfGlass, priceOfCrowns, finalPrice, crownFinalPrice, grandTotalPrice; 
    int numberOfCrowns;
    char typeOfFrame, choiceOfColor, choiceOfCrowns;



    System.out.println ("Please enter the length of your picure in inches:");
    length = console.nextDouble(); …
Run Code Online (Sandbox Code Playgroud)

java

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