Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Логика понятна, она есть, но C# всё же намного интуитивнее.Вы так говорите, как будто это плохо (ц) Интуитивность желаннее логичности ровно до того момента, когда начинаешь понимать, как всё работает.
public static Integer valueOf(int i) {
if(i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
Что логично и понятно… но совершенно неинтуитивно.Язык программирования (сейчас речь о языках ниши Java/C++/C# итд) и должен быть логичным и понятным, ибо это формальная система. В этом и есть смысл ЯП — наличие строгой семантики и синтаксиса. Иначе бы все писали на «интуитивном» русском/английском/… языке и не парились.
a = 1000 # a - ссылка на объект 1000
b = 1000 # b - ссылка на объект 1000
a == b # True - один и тот же объект
a += 1 # a - ссылка на объект 1001
a == b # Flase - разные объекты
a -= 1 # а снова ссылается на объект 1000
>>> a = 1000
>>> b = 1000
>>> c = a
>>> a == b
True
>>> a == c
True
>>> a is c
True
>>> a is b
False
for(Integer i = Integer.valueOf(0); i.intValue() < 0x186a0;) // Первый unboxing
{
Integer key;
for(Iterator i$ = getRandomKeys().iterator(); i$.hasNext(); put(key, i.intValue()))
key = (Integer)i$.next();
Integer integer = i;
Integer integer1 = i = Integer.valueOf(i.intValue() + 1); // Второй unboxing
Integer _tmp = integer;
}
public static void put(Integer key, int value)
{
if(!subSets.containsKey(key))
subSets.put(key, new HashSet());
((Set)subSets.get(key)).add(Integer.valueOf(value)); // BOXING
}
.......
for(Integer i = Integer.valueOf(0); i.intValue() < 0x186a0;)
{
Integer key;
for(Iterator i$ = getRandomKeys().iterator(); i$.hasNext(); put(key, i.intValue())) // UNBOXING
key = (Integer)i$.next();
Integer integer = i;
Integer integer1 = i = Integer.valueOf(i.intValue() + 1);
Integer _tmp = integer;
}
public static void put(Integer key, Integer value)
{
if(!subSets.containsKey(key))
subSets.put(key, new HashSet());
((Set)subSets.get(key)).add(value);
}
........
for(Integer i = Integer.valueOf(0); i.intValue() < 0x186a0;)
{
Integer key;
for(Iterator i$ = getRandomKeys().iterator(); i$.hasNext(); put(key, i))
key = (Integer)i$.next();
Integer integer = i;
Integer integer1 = i = Integer.valueOf(i.intValue() + 1);
Integer _tmp = integer;
}
public static void put(Integer key, Integer value)
{
if(!subSets.containsKey(key))
subSets.put(key, new HashSet());
((Set)subSets.get(key)).add(value);
}
...............
for(int i = 0; i < 0x186a0; i++)
{
Integer key;
for(Iterator i$ = getRandomKeys().iterator(); i$.hasNext(); put(key, Integer.valueOf(i)))
key = (Integer)i$.next();
}
Integer и int