对不起,这里有一个简单的问题,只是在我的笔记中发现了一些关于最终制作方法的内容.我的笔记声称你应该为这个方法做出决定:
使强制执行不变量成为不可能.
String应该表现为String.
我真的不明白这是什么意思.有人可以帮我分手吗?非常感谢.
在我的笔记中找到以下内容,但我无法理解它:
基元类型包装类为有限数量的值实现缓存.
这保证了有限数量的深度相等的包装器对象也非常相等:如果那样的o1.equals( o2 )话o1 == o2.
例如,new Integer( 0 ) == new Integer( 0 ).
一般来说,这并不总是有效.
例如,新的Integer(666)== new Integer(666)
可能不成立.
缓存的原因是它可以节省内存.
通常,缓存适用于"小"原始值.
我不明白这是什么意思,或深(.equals())和浅(==)等于之间的区别.我知道在实践中,.equals必须用于对象,而==用于Integral值,但实际的推理却暗示了我.
我假设名称浅浅可能只是检查两个值是否具有相同的类型和名称,深层检查两个变量是否指向同一个对象?我不知道缓存会如何在这里发挥作用,或者为什么它会有用.
我是否正确地说,在两种算法中,您所做的只是采用您的结构,递归地将其分成两部分,然后以正确的顺序构建您的结构?
那么区别是什么呢?
编辑:我发现了以下算法在quicksort中实现分区,但我真的不明白它是如何工作的,特别是(hi + low) >>> 1用作参数的swop行!任何人都可以理解这个吗?
private static int partition( int[] items, int lo, int hi )
{
int destination = lo;
swop( items, (hi + lo) >>> 1, hi );
// The pivot is now stored in items[ hi ].
for (int index = lo; index != hi; index ++)
{
if (items[ hi ] >= items[ index ])
{
// Move current item to start.
swop( items, destination, index );
destination ++;
}
// items[ …Run Code Online (Sandbox Code Playgroud)