要获得newString
值" 99 bottles
":
int x = 99;
String fruit = " bottles";
Run Code Online (Sandbox Code Playgroud)
要形成一个新的String,我这样做:
String newString = "" + x + fruit;
Run Code Online (Sandbox Code Playgroud)
因为这是不允许的:
String newString = x + fruit;
Run Code Online (Sandbox Code Playgroud)
但是这里使用双引号有点似乎不对.
有没有更好的方法来做到这一点(不使用"" + x
)?
fac
Haskell 中的术语含义是什么?我在很多场合看过它,但似乎没有任何类型的定义.我知道它与阶乘有关,但我不太确定人们在提到这个术语时的意思fac
.
这是一个例子:
sumFacs n = fac 0 + fac 1 + ... + fac (n-1) + fac n
Run Code Online (Sandbox Code Playgroud) 这是一个愚蠢的问题.我还在学习,并且彻底地过度思考这种情况.
在源代码中Integer
,它显示MIN_VALUE
并MAX_VALUE
声明为:
public static final int MIN_VALUE = 0x80000000;
public static final int MAX_VALUE = 0x7fffffff;
Run Code Online (Sandbox Code Playgroud)
我的问题是,这些如何int
首先被宣布?似乎必须知道这些值才能使值开始验证(或溢出或其他).它显然无法在声明之前自行检查,所以它是如何工作的?
想象一下Java中的以下ArrayList:
ArrayList<Integer> u = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)
我想知道在将新值添加为基本类型或包装类时是否存在差异:
u.add(new Integer(12));
u.add(12);
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在制作一个程序,我需要声明一个构造函数,它可以接受各种原始类型,如double
or float
,并将其转换为int
.
我的程序只使用int
,所以我需要在构造函数中接受任何原始数据类型并将其转换为int
.
我正在使用Java SE开发工具包8更新25(64位).我已经阅读了The Java™Tutorials中的"原始数据类型"Java教程,根据此规范,long类型可以保持最大值(2到64的功率)-1,即18446744073709551615.
但是下面的代码会抛出"整数太大"错误消息.
public class SampleClass
{
public static void main (String[] args)
{
Long longMaxValue= 18446744073709551615L /* UInt64.MaxValue */;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,Long.Max_Value仅返回9223372036854775807.为什么?我需要将值18,446,744,073,709,551,615存储为java中的常量.我该怎么办?
任何帮助都会得到满足.
关于原始类型如何在Java中工作,我有一个奇怪的问题.将ObjectA指定为ObjectB时使用对象时是这样的
Rectangle ObjectB = new Rectangle();
ObjectA = ObjectB;
Run Code Online (Sandbox Code Playgroud)
对ObjectA的任何调用现在都指向ObjectB的内存位置.但是,当使用整数或其他原始类型时,情况并非如此.例如
int x = 3;
int y = x;
int x = 5;
return y;
Run Code Online (Sandbox Code Playgroud)
当y被初始化时,y将返回3,即x的值.
我的问题是为什么对象的赋值在内存中创建引用,而原语会复制彼此的值?除了这个有用的事实,这是如何在Java中实现的?
我很感激能够让我更好地理解赋值在原始类型和对象之间如何工作的人.
我TPoint
在运行时创建了几个对象,但我没有销毁它们。
我检查了TPoint
in的代码System.Types
:
PPoint = ^TPoint;
TPoint = record
X: FixedInt;
Y: FixedInt;
public
constructor Create(P : TPoint); overload;
constructor Create(const X, Y : Integer); overload;
//operator overloads
class operator Equal(const Lhs, Rhs : TPoint) : Boolean;
class operator NotEqual(const Lhs, Rhs : TPoint): Boolean;
class operator Add(const Lhs, Rhs : TPoint): TPoint;
class operator Subtract(const Lhs, Rhs : TPoint): TPoint;
class operator Implicit(Value: TSmallPoint): TPoint;
class operator Explicit(Value: TPoint): TSmallPoint;
class function PointInCircle(const Point, …
Run Code Online (Sandbox Code Playgroud) 如果 C# 的内置数据类型的实现方式与 Java 的原始数据类型的实现方式相同,那么性能会不会有所不同?
例如,在C#中,如果我们编写如下代码:
int foo = 1;
Run Code Online (Sandbox Code Playgroud)
我们正在声明和实例化一个对象,对吗?
然而,在 Java 中,当我们编写同一段代码时,我们并不是在实例化一个对象。因为 ' int
' 是“由 Java 编译器和 JVM 直接实现的”。
所以我想知道如果 C# 使用与 Java 相同的实现是否会有所不同——即每次int
在 C# 中使用原始数据类型时都不创建一个对象。
所以也许很多人都知道我们需要做的关于学习原语的练习,我们需要打印h3110 w0r1d 2.0 true
所以我的是这个;
public class main {
public static void main(String[] args) {
// H3110 w0r1d 2.0 true
byte bir = 0;
short iki = 31;
int uc = 10;
long dort = 1;
float bes = 2.0f;
char yedi = 'H';
char sekiz = 'w';
char dokuz = 'd';
char ekstra = ' ';
char ramk = 'r';
boolean on = true;
String son = (yedi + iki + uc + ekstra + sekiz + bir + …
Run Code Online (Sandbox Code Playgroud) 嗨,我有两个问题:
uint64_t vs double,它覆盖正数的范围限制更高?
如果只需要double的整数部分,如何将double转换为uint64_t.
由于定义了双重,直接铸造显然不起作用.
很抱歉有任何困惑,我在谈论32位机器上的64位双C语言.
至于一个例子:
//operation for convertion I used:
double sampleRate = (
(union { double i; uint64_t sampleRate; })
{ .i = r23u.outputSampleRate}
).sampleRate;
//the following are printouts on command line
// double uint64_t
//printed by %.16llx %.16llx
outputSampleRate 0x41886a0000000000 0x41886a0000000000 sampleRate
//printed by %f %llu
outputSampleRate 51200000.000000 4722140757530509312 sampleRate
Run Code Online (Sandbox Code Playgroud)
所以这两个数字仍然是相同的位模式,但是当打印出小数时,uint64_t是完全错误的.谢谢.