ru.java (original) (raw)

[sticky post]Изменения в модераторстве.

Берусь за модерирование сообщства в соответсвии с обсуждением здесь.

http://ru-java.livejournal.com/1118190.html
Вступление становится открытым.
Посты становятся премодерируемыми, с добавлением людей в белый список.

Люди ранее заблокированные могут обратиться за разблокированием.

А как из InputStreamReader читать старшие юникоды?

dead_doomer

December 17th, 2012

Ну, то есть, пишу я упражнение, выглядит оно так:

InputStreamReader input = new InputStreamReader( getClass().getResourceAsStream("testfile.txt"), "UTF-8"); while(input.ready()) { Character inp_c = (char)input.read(); if( WordCount.containsKey(inp_c)) { Integer temp = WordCount.get(inp_c); temp++; WordCount.put(inp_c, temp); } else { WordCount.put(inp_c, 1); } }

Что меня раздражает - это приведение типа в строчке:
Character inp_c = (char)input.read();

Int, конечно, не проблема привести к char,

вот только Character может содержать символы из нескольких char'ов

(не, не может.). Точнее, все плоскости, кроме первой должны состоять больше чем из одного char'a.

АПД. Видимо, меня не поняли. Я прекрасно понимаю, что char - это не 8 бит, а 16.
Мне нужны код-пойнты, не влезающие в 16 бит, а именно старшие плоскости юникода - 14,15,16.

АПД2. Все, нагуглил.
http://www.oracle.com/technetwork/articles/javase/supplementary-142654.html

Иными словами, полный пипец. Вместо нормальной инкапсуляции кодпойнта в класс, оракл говорит: вот вам суррогатные пары из двух char и трахайтесь как хотите.
Класс Character может расковырять вам 21битный инт на 2 char'a, а стандартное представление высшего юникода - это String.
Спасибо, дорогой оракл!

переполнение инта

denniskharlamov

February 5th, 2009

Сегодня как-то наткнулся и ну очень захотелось напомнить об интересной фишке в Java - расширение int до long. Не сочтите за спам ;)

Вот ниже идет простой код и переменные MICROS_PER_DAY_1 и MICROS_PER_DAY_2 отличаются на одну букву, а какая разница в результате. Кто не знал и кто знал но забыл - запускайте :) и не делайте как в первом варианте.

public class Test {
private static final long MICROS_PER_DAY_1 = 24 * 60 * 60 * 1000 * 1000;
private static final long MICROS_PER_DAY_2 = 24L * 60 * 60 * 1000 * 1000;

public static void main(String[] args) throws Exception {
System.out.println("MICROS_PER_DAY_1 : " + MICROS_PER_DAY_1);
System.out.println("MICROS_PER_DAY_2 : " + MICROS_PER_DAY_2);
}
}

Eclipse - жосткое порно

Working

zzhou

March 1st, 2006

Вот так вот. Playboy Enterprises открыли зеркало Eclipse.org - не все админы будут вникать что было скачано c *.playboy.com/* - и руководство фирмы вполне может прийти к выводу что злобный явист скачал 103 Мб порно. Будьте осторожны :)

Это баг в BZ.