Java½â»ó3 31Ñ»·ÕߵĹí»ê
ÇëÌṩһ¸ö¶ÔiµÄÉùÃ÷£¬½«ÏÂÃæµÄÑ»·×ª±äΪһ¸öÎÞÏÞÑ»·£º
while (i != 0) {
i >>>= 1;
}
»ØÏëһϣ¬>>>=ÊǶÔÓ¦ÓÚÎÞ·ûºÅÓÒÒÆ²Ù×÷·ûµÄ¸³Öµ²Ù×÷·û¡£0±»´Ó×óÒÆÈëµ½ÓÉÒÆÎ»²Ù×÷¶ø¿Õ³öÀ´µÄλÉÏ£¬¼´Ê¹±»ÒÆÎ»µÄ¸ºÊýÒ²ÊÇÈç´Ë¡£
Õâ¸öÑ»·±ÈÇ°ÃæÈý¸öÑ»·ÒªÉÔ΢¸´ÔÓÒ»µã£¬ÒòΪÆäÑ»·Ìå·Ç¿Õ¡£ÔÚÆäÑ»·ÌâÖУ¬iµÄÖµÓÉËüÓÒÒÆÒ»Î»Ö®ºóµÄÖµËùÌæ´ú¡£ÎªÁËÊ¹ÒÆÎ»ºÏ·¨£¬i±ØÐëÊÇÒ»¸öÕûÊýÀàÐÍ£¨byte¡¢char¡¢short¡¢int»òlong£©¡£ÎÞ·ûºÅÓÒÒÆ²Ù×÷·û°Ñ0´Ó×ó±ßÒÆÈ룬Òò´Ë¿´ÆðÀ´Õâ¸öÑ»·Ö´Ðеü´úµÄ´ÎÊýÓë×î´óµÄÕûÊýÀàÐÍËùÕ¼¾ÝµÄλÊýÏàͬ£¬¼´64´Î¡£Èç¹ûÄãÔÚÑ»·µÄÇ°Ãæ·ÅÖÃÈçϵÄÉùÃ÷£¬ÄÇôÕâȷʵ¾ÍÊǽ«Òª·¢ÉúµÄÊÂÇ飺
long i = -1; // -1L has all 64 bits set
ÄãÔõÑù²ÅÄܽ«Ëüת±äΪһ¸öÎÞÏÞÑ»·ÄØ£¿½â¾ö±¾ÃÕÌâµÄ¹Ø¼üÔÚÓÚ>>>=ÊÇÒ»¸ö¸´ºÏ¸³Öµ²Ù×÷·û¡££¨¸´ºÏ¸³Öµ²Ù×÷·û°üÀ¨*=¡¢/=¡¢%=¡¢+=¡¢-=¡¢<<=¡¢>>=¡¢>>>=¡¢&=¡¢^=ºÍ|=¡££©ÓйػìºÏ²Ù×÷·ûµÄÒ»¸ö²»ÐÒµÄÊÂʵÊÇ£¬ËüÃÇ¿ÉÄÜ»á×Ô¶¯µØÖ´ÐÐÕ»¯ÔʼÀàÐÍת»»[JLS 15.26.2]£¬ÕâÖÖת»»°ÑÒ»ÖÖÊý×ÖÀàÐÍת»»³ÉÁËÁíÒ»ÖÖ¸üȱ·¦±íʾÄÜÁ¦µÄÀàÐÍ¡£Õ»¯ÔʼÀàÐÍת»»¿ÉÄܻᶪʧ¼¶ÊýµÄÐÅÏ¢£¬»òÕßÊÇÊýÖµµÄ¾«¶È[JLS 5.1.3]¡£
ÈÃÎÒÃǸü¾ßÌåһЩ£¬¼ÙÉèÄãÔÚÑ»·µÄÇ°Ãæ·ÅÖÃÁËÏÂÃæµÄÉùÃ÷£º
short i = -1;
ÒòΪiµÄ³õʼֵ£¨(short)0xffff£©ÊÇ·Ç0µÄ£¬ËùÒÔÑ»·Ìå»á±»Ö´ÐС£ÔÚÖ´ÐÐÒÆÎ»²Ù×÷ʱ£¬µÚÒ»²½Êǽ«iÌáÉýΪintÀàÐÍ¡£ËùÓÐËãÊý²Ù×÷¶¼»á¶Ôshort¡¢byteºÍcharÀàÐ͵IJÙ×÷ÊýÖ´ÐÐÕâÑùµÄÌáÉý¡£ÕâÖÖÌáÉýÊÇÒ»¸öÍØ¿íÔʼÀàÐÍת»»£¬Òò´ËûÓÐÈκÎÐÅÏ¢»á¶ªÊ§¡£ÕâÖÖÌáÉýÖ´ÐеÄÊÇ·ûºÅÀ©Õ¹£¬Òò´ËËù²úÉúµÄintÊýÖµÊÇ0xffffffff¡£È»ºó£¬Õâ¸öÊýÖµÓÒÒÆ1룬µ«²»Ê¹Ó÷ûºÅÀ©Õ¹£¬Òò´Ë²úÉúÁËintÊýÖµ0x7fffffff¡£×îºó£¬Õâ¸öÊýÖµ±»´æ»Øµ½iÖС£ÎªÁ˽«intÊýÖµ´æÈëshort±äÁ¿£¬JavaÖ´ÐеÄÊÇ¿ÉŵÄÕ»¯ÔʼÀàÐÍת»»£¬ËüÖ±½Ó½«¸ß16λ½Øµô¡£ÕâÑù¾ÍֻʣÏÂ(short)oxffffÁË£¬ÎÒÃÇÓֻص½ÁË¿ªÊ¼´¦¡£Ñ»·µÄµÚ¶þ´ÎÒÔ¼°ºóÐøµÄµü´úÐÐΪ¶¼ÊÇÒ»ÑùµÄ£¬Òò´ËÑ»·½«ÓÀÔ¶²»»áÖÕÖ¹¡£
Èç¹ûÄ㽫iÉùÃ÷Ϊһ¸öshort»òbyte±äÁ¿£¬²¢ÇÒ³õʼ»¯ÎªÈκθºÊý£¬ÄÇôÕâÖÖÐÐΪҲ»á·¢Éú¡£Èç¹ûÄãÉùÃ÷iΪһ¸öchar£¬ÄÇôÄ㽫ÎÞ·¨µÃµ½ÎÞÏÞÑ»·£¬ÒòΪcharÊÇÎÞ·ûºÅµÄ£¬ËùÒÔ·¢ÉúÔÚÒÆÎ»Ö®Ç°µÄÍØ¿íÔʼÀàÐÍת»»²»»áÖ´ÐзûºÅÀ©Õ¹¡£
×ÜÖ®£¬²»ÒªÔÚshort¡¢byte»òcharÀàÐ͵ıäÁ¿Ö®ÉÏʹÓø´ºÏ¸³Öµ²Ù×÷·û¡£ÒòΪÕâÑùµÄ±í´ïʽִÐеÄÊÇ»ìºÏÀàÐÍËãÊõÔËË㣬ËüÈÝÒ×Ôì³É»ìÂÒ¡£¸üÔãµÄÊ
Ïà¹ØÎĵµ£º
ÏÂÃæµÄ³ÌÐò±»Éè¼ÆÓÃÀ´´òÓ¡ËüµÄÀàÎļþµÄÃû³Æ¡£Èç¹ûÄã²»ÊìϤÀà×ÖÃæ³£Á¿£¬ÄÇôÎÒ¸æËßÄãMe.class.getName()½«·µ»ØMeÀàÍêÕûµÄÃû³Æ£¬¼´“com.javapuzzlers.Me”¡£ÄÇô£¬Õâ¸ö³ÌÐò»á´òÓ¡³öÊ²Ã´ÄØ£¿
package com.javapuzzlers;
public class Me {
public static void main(String[] args){
System.out.pr ......
ÏÂÃæµÄ³ÌÐò½«´òÓ¡Ò»¸öµ¥´Ê£¬ÆäµÚÒ»¸ö×ÖĸÊÇÓÉÒ»¸öËæ»úÊýÉú³ÉÆ÷À´Ñ¡ÔñµÄ¡£ÇëÃèÊö¸Ã³ÌÐòµÄÐÐΪ£º
import java.util.Random;
public class Rhymes {
private static Random rnd = new Random();
public static void main(String[] args) {
StringBuffer word = null;
switch(rnd.nextInt(2)) {
......
ÏÂÃæµÄÃÕÌâÒÔ¼°ËæºóµÄÎå¸öÃÕÌâ¶ÔÄãÀ´ËµÊÇŤתÁ˾ÖÃæ£¬ËüÃDz»ÊÇÏòÄãչʾijЩ´úÂ룬ȻºóѯÎÊÄãÕâЩ´úÂ뽫×öЩʲô£¬ËüÃÇÒªÈÃÄãȥд´úÂ룬µ«ÊÇÊýÁ¿»áºÜÉÙ¡£ÕâЩÃÕÌâ±»³ÆÎª“Ñ»·Õߣ¨looper£©”¡£ÄãÑÛǰ»áչʾ³öÒ»¸öÑ»·£¬Ëü¿´ÆðÀ´Ó¦¸ÃºÜ¿ì¾ÍÖÕÖ¹µÄ£¬¶øÄãµÄÈÎÎñ¾ÍÊÇдһ¸ö±äÁ¿ÉùÃ÷£¬ÔÚ½«Ëü×÷ÓÃÓÚ¸ÃÑ»·Ö®ÉÏʱ£¬Ê¹µÃ¸Ã ......
ÇëÌṩһ¸ö¶ÔiµÄÉùÃ÷£¬½«ÏÂÃæµÄÑ»·×ª±äΪһ¸öÎÞÏÞÑ»·£º
while (i != i) {
}
Õâ¸öÑ»·¿ÉÄܱÈǰһ¸ö»¹ÒªÊ¹È˸е½À§»ó¡£²»¹ÜÔÚËüÇ°Ãæ×÷ºÎÖÖÉùÃ÷£¬Ëü¿´ÆðÀ´È·ÊµÓ¦¸ÃÁ¢¼´ÖÕÖ¹¡£Ò»¸öÊý×Ö×ÜÊǵÈÓÚËü×Ô¼º£¬¶ÔÂð£¿
¶Ô£¬µ«ÊÇIEEE 754¸¡µãËãÊõ±£ÁôÁËÒ»¸öÌØÊâµÄÖµÓÃÀ´±íʾһ¸ö²»ÊÇÊý×ÖµÄÊýÁ¿[IEEE 754]¡£Õâ¸öÖµ¾ÍÊÇNaN£¨“ ......