头条创作挑战赛 基本数据类型 Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitivedatatype)和引用数据类型(referencedatatype)。 PS:巧妙记忆:除了基本数据类型以外的所有类型都属于引用数据类型,本章重点:基本数据类型 一、整数类型整 1、数类型常量 十进制整数,如:99,500,0 八进制整数,要求以0开头,如:015 十六进制数,要求0x或0X开头,如:0x15 二进制:要求0b或者0B开头,如:0b11 几进制:就是逢几进1的问题: 平时实际生活中用的最多的是:十进制 计算机用二进制最多 扩展:进制转换问题 【1】二进制转换为十进制: 二进制:1101 123122021120 8401 13 【2】十进制转换为二进制: 十进制13 【3】八进制转换十进制: 八进制:16 181680 86 14 【4】十进制转换为八进制: 十进制14: 【5】八进制转换为十六进制: 把十进制当做一个中转站: 八进制》十进制》十六进制 实际上根本不用自己转换这么麻烦:我们可以直接用系统中提供给我们的计算器: 2、整数类型变量 整型数据类型: 比如:byte的右侧表数范围127怎么算出来的? byte:1字节8位 二进制:01111111 126125124123122121120 6432168421 127 代码: publicclassTestVar05{publicstaticvoidmain(String〔〕args){定义整数类型的变量:给变量赋值的时候,值可以为不同进制的:intnum112;默认情况下赋值就是十进制的情况System。out。println(num1);intnum2012;前面加上0,这个值就是八进制的System。out。println(num2);intnum30x12;前面加上0x或者0X,这个值就是十六进制的System。out。println(num3);intnum40b10;前面加上0b或者0B,这个值就是二进制的System。out。println(num4);定义byte类型的变量:byteb126;定义了一个byte类型的变量,名字叫b,赋值为12System。out。println(b);注意:超范围的赋值会报错。shorts30000;System。out。println(s);inti1234;System。out。println(i);整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,它超出范围了要想把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了longnum512345678910L;System。out。println(num5);注意:只有这个数超出int类型的范围了后面才需要加上L,否则无需加L也可以赋值给long类型:longnum612;System。out。println(num6);}} 二、浮点类型 1、浮点类型常量 (1)十进制数形式,例如: 3。14314。00。314 (2)科学记数法形式,如 314e2314E2(E的大小写没有区分)314E2 doublef314e2;31410231400。0 doublef2314e2;31410(2)3。14 2、浮点类型变量 float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。 而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。 float类型的数值有一个后缀F或者f,没有后缀Ff的浮点数值默认为double类型。 也可以在浮点数值后添加后缀D或者d,以明确其为double类型。 PS:有效数字指的是从左开始第一个不为0的数到最后一个数 代码: publicclassTestVar06{publicstaticvoidmain(String〔〕args){浮点类型的常量有两种形式:十进制形式:doublenum13。14;System。out。println(num1);科学计数法形式:doublenum2314E2;System。out。println(num2);浮点类型的变量:注意:浮点型默认是double类型的,要想将一个double类型的数赋给float类型,必须后面加上F或者ffloatf13。14234567898623F;System。out。println(f1);注意:double类型后面可以加D或者d,但是一般我们都省略不写doubled13。14234567898623D;System。out。println(d1);注意:我们最好不要进行浮点类型的比较:floatf20。3F;doubled20。3;System。out。println(f2d2);区别:赋值运算:将等号右侧的值赋给等号左侧判断左右两侧的值是否相等:结果要么相等要么不相等运算符的结果就是要么是true,要么是false}} 三、字符类型 【1】Java中使用单引号来表示字符常量,字符型在内存中占2个字节 char类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。 【2】转义字符 【3】ASCII表 【4】Unicode编码表 Unicode编码表00000FFF 图例: Unicode3。1 Unicode1。0 Unicode3。2 Unicode1。1 Unicode4。0 Unicode2。0 Unicode4。1 Unicode2。1 未使用 Unicode3。0 不作编码 Unicode编码表 00000FFF 80008FFF 1000010FFF 2000020FFF 2800028FFF 10001FFF 90009FFF 2100021FFF 2900029FFF 20002FFF A000AFFF 2200022FFF 2A0002AFFF 30003FFF B000BFFF 2300023FFF 40004FFF C000CFFF 1D0001DFFF 2400024FFF 2F0002FFFF 50005FFF D000DFFF 2500025FFF 60006FFF E000EFFF 2600026FFF 70007FFF F000FFFF 2700027FFF E0000E0FFF 【Unicode码表】 0000007F:C0控制符及基本拉丁文(C0ControlandBasicLatin) 008000FF:C1控制符及拉丁文补充1(C1ControlandLatin1Supplement) 0100017F:拉丁文扩展A(LatinExtendedA) 0180024F:拉丁文扩展B(LatinExtendedB) 025002AF:国际音标扩展(IPAExtensions) 02B002FF:空白修饰字母(SpacingModifiers) 0300036F:结合用读音符号(CombiningDiacriticsMarks) 037003FF:希腊文及科普特文(GreekandCoptic) 040004FF:西里尔字母(Cyrillic) 0500052F:西里尔字母补充(CyrillicSupplement) 0530058F:亚美尼亚语(Armenian) 059005FF:希伯来文(Hebrew) 060006FF:阿拉伯文(Arabic) 0700074F:叙利亚文(Syriac) 0750077F:阿拉伯文补充(ArabicSupplement) 078007BF:马尔代夫语(Thaana) 07C0077F:西非書面語言(NKo) 0800085F:阿维斯塔语及巴列维语(AvestanandPahlavi) 0860087F:Mandaic 088008AF:撒马利亚语(Samaritan) 0900097F:天城文书(Devanagari) 098009FF:孟加拉语(Bengali) 0A000A7F:锡克教文(Gurmukhi) 0A800AFF:古吉拉特文(Gujarati) 0B000B7F:奥里亚文(Oriya) 0B800BFF:泰米尔文(Tamil) 0C000C7F:泰卢固文(Telugu) 0C800CFF:卡纳达文(Kannada) 0D000D7F:德拉维族语(Malayalam) 0D800DFF:僧伽罗语(Sinhala) 0E000E7F:泰文(Thai) 0E800EFF:老挝文(Lao) 0F000FFF:藏文(Tibetan) 1000109F:缅甸语(Myanmar) 10A010FF:格鲁吉亚语(Georgian) 110011FF:朝鲜文(HangulJamo) 1200137F:埃塞俄比亚语(Ethiopic) 1380139F:埃塞俄比亚语补充(EthiopicSupplement) 13A013FF:切罗基语(Cherokee) 1400167F:统一加拿大土著语音节(UnifiedCanadianAboriginalSyllabics) 1680169F:欧甘字母(Ogham) 16A016FF:如尼文(Runic) 1700171F:塔加拉语(Tagalog) 1720173F:Hanuno 1740175F:Buhid 1760177F:Tagbanwa 178017FF:高棉语(Khmer) 180018AF:蒙古文(Mongolian) 18B018FF:Cham 1900194F:Limbu 1950197F:德宏泰语(TaiLe) 198019DF:新傣仂语(NewTaiLue) 19E019FF:高棉语记号(KmerSymbols) 1A001A1F:Buginese 1A201A5F:Batak 1A801AEF:Lanna 1B001B7F:巴厘语(Balinese) 1B801BB0:巽他语(Sundanese) 1BC01BFF:PahawhHmong 1C001C4F:雷布查语(Lepcha) 1C501C7F:OlChiki 1C801CDF:曼尼普尔语(MeitheiManipuri) 1D001D7F:语音学扩展(PhoneticExtensions) 1D801DBF:语音学扩展补充(PhoneticExtensionsSupplement) 1DC01DFF:结合用读音符号补充(CombiningDiacriticsMarksSupplement) 1E001EFF:拉丁文扩充附加(LatinExtendedAdditional) 1F001FFF:希腊语扩充(GreekExtended) 2000206F:常用标点(GeneralPunctuation) 2070209F:上标及下标(SuperscriptsandSubscripts) 20A020CF:货币符号(CurrencySymbols) 20D020FF:组合用记号(CombiningDiacriticsMarksforSymbols) 2100214F:字母式符号(LetterlikeSymbols) 2150218F:数字形式(NumberForm) 219021FF:箭头(Arrows) 220022FF:数学运算符(MathematicalOperator) 230023FF:杂项工业符号(MiscellaneousTechnical) 2400243F:控制图片(ControlPictures) 2440245F:光学识别符(OpticalCharacterRecognition) 246024FF:封闭式字母数字(EnclosedAlphanumerics) 2500257F:制表符(BoxDrawing) 2580259F:方块元素(BlockElement) 25A025FF:几何图形(GeometricShapes) 260026FF:杂项符号(MiscellaneousSymbols) 270027BF:印刷符号(Dingbats) 27C027EF:杂项数学符号A(MiscellaneousMathematicalSymbolsA) 27F027FF:追加箭头A(SupplementalArrowsA) 280028FF:盲文点字模型(BraillePatterns) 2900297F:追加箭头B(SupplementalArrowsB) 298029FF:杂项数学符号B(MiscellaneousMathematicalSymbolsB) 2A002AFF:追加数学运算符(SupplementalMathematicalOperator) 2B002BFF:杂项符号和箭头(MiscellaneousSymbolsandArrows) 2C002C5F:格拉哥里字母(Glagolitic) 2C602C7F:拉丁文扩展C(LatinExtendedC) 2C802CFF:古埃及语(Coptic) 2D002D2F:格鲁吉亚语补充(GeorgianSupplement) 2D302D7F:提非纳文(Tifinagh) 2D802DDF:埃塞俄比亚语扩展(EthiopicExtended) 2E002E7F:追加标点(SupplementalPunctuation) 2E802EFF:CJK部首补充(CJKRadicalsSupplement) 2F002FDF:康熙字典部首(KangxiRadicals) 2FF02FFF:表意文字描述符(IdeographicDescriptionCharacters) 3000303F:CJK符号和标点(CJKSymbolsandPunctuation) 3040309F:日文平假名(Hiragana) 30A030FF:日文片假名(Katakana) 3100312F:注音字母(Bopomofo) 3130318F:朝鲜文兼容字母(HangulCompatibilityJamo) 3190319F:象形字注释标志(Kanbun) 31A031BF:注音字母扩展(BopomofoExtended) 31C031EF:CJK笔画(CJKStrokes) 31F031FF:日文片假名语音扩展(KatakanaPhoneticExtensions) 320032FF:封闭式CJK文字和月份(EnclosedCJKLettersandMonths) 330033FF:CJK兼容(CJKCompatibility) 34004DBF:CJK统一表意符号扩展A(CJKUnifiedIdeographsExtensionA) 4DC04DFF:易经六十四卦符号(YijingHexagramsSymbols) 4E009FBF:CJK统一表意符号(CJKUnifiedIdeographs) A000A48F:彝文音节(YiSyllables) A490A4CF:彝文字根(YiRadicals) A500A61F:Vai A660A6FF:统一加拿大土著语音节补充(UnifiedCanadianAboriginalSyllabicsSupplement) A700A71F:声调修饰字母(ModifierToneLetters) A720A7FF:拉丁文扩展D(LatinExtendedD) A800A82F:SylotiNagri A840A87F:八思巴字(Phagspa) A880A8DF:Saurashtra A900A97F:爪哇语(Javanese) A980A9DF:Chakma AA00AA3F:VarangKshiti AA40AA6F:SorangSompeng AA80AADF:Newari AB00AB5F:越南傣语(Vi?tThi) AB80ABA0:KayahLi AC00D7AF:朝鲜文音节(HangulSyllables) D800DBFF:HighhalfzoneofUTF16 DC00DFFF:LowhalfzoneofUTF16 E000F8FF:自行使用區域(PrivateUseZone) F900FAFF:CJK兼容象形文字(CJKCompatibilityIdeographs) FB00FB4F:字母表達形式(AlphabeticPresentationForm) FB50FDFF:阿拉伯表達形式A(ArabicPresentationFormA) FE00FE0F:变量选择符(VariationSelector) FE10FE1F:竖排形式(VerticalForms) FE20FE2F:组合用半符号(CombiningHalfMarks) FE30FE4F:CJK兼容形式(CJKCompatibilityForms) FE50FE6F:小型变体形式(SmallFormVariants) FE70FEFF:阿拉伯表達形式B(ArabicPresentationFormB) FF00FFEF:半型及全型形式(HalfwidthandFullwidthForm) FFF0FFFF:特殊(Specials) U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0000hrNUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 0010hrDLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 0020hr! ( ) , 。 0030hr0hr1hr2hr3hr4hr5hr6hr7hr8hr9hr: ; ? 0040hr A B C D E F G H I J K L M N O 0050hrP Q R S T U V W X Y Z 〔 〕 0060hr a b c d e f g h i j k l m n o 0070hrp q r s t u v w x y z { } DEL 0080hrPAD HOP BPH NBH IND NEL SSA ESA HTS HTJ VTS PLD PLU RI SS2 SS3 0090hrDCS PU1 PU2 STS CCH MW SPA EPA SOS SGCI SCI CSI ST OSC PM APC 00A0 NBSP SHY 00B0 00C0 00D0 00E0 00F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0100hr 0110hr 0120hr 0130hr 0140hr 0150hr 0160hr 0170hr 0180hr 0190hr 01A0 01B0 01C0 01D0 01E0 01F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0200hr 0210hr 0220hr 0230hr 0240hr 0250hr 0260hr 0270hr 0280hr 0290hr 02A0 02B0 02C0 02D0 02E0 02F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0300hr 0310hr 0320hr 0330hr 0340hr CGJ 0350hr 0360hr 0370hr 0380hr 0390hr 03A0 03B0 03C0 03D0 03E0 03F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0400hr 0410hr 0420hr 0430hr 0440hr 0450hr 0460hr 0470hr 0480hr 0490hr 04A0 04B0 04C0 04D0 04E0 04F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0500hr 0510hr0520hr0530hr 0540hr 0550hr 0560hr 0570hr 0580hr 0590hr 05A0 05B0 05C0 05D0 05E0 05F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0600hr 0610hr 0620hr 0630hr 0640hr 0650hr 0660hr 0670hr 0680hr 0690hr 06A0 06B0 06C0 06D0 06E0 06F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0700hr 0710hr 0720hr 0730hr 0740hr 0750hr 0760hr 0770hr0780hr 0790hr 07A0 07B0 07C0 07D0 07E0 07F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0800hr0810hr0820hr0830hr0840hr0850hr0860hr0870hr0880hr0890hr08A0 08B0 08C0 08D0 08E0 08F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0900hr 0910hr 0920hr 0930hr 0940hr 0950hr 0960hr 0970hr 0980hr 0990hr 09A0 09B0 09C0 09D0 09E0 09F0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0A00 0A10 0A20 0A30 0A40 0A50 0A60 0A70 0A80 0A90 0AA0 0AB0 0AC0 0AD0 0AE0 0AF0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0B00 0B10 0B20 0B30 0B40 0B50 0B60 0B70 0B80 0B90 0BA0 0BB0 0BC0 0BD0 0BE0 0BF0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0C00 0C10 0C20 0C30 0C40 0C50 0C60 0C70 0C80 0C90 0CA0 0CB0 0CC0 0CD0 0CE0 0CF0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0D00 0D10 0D20 0D30 0D40 0D50 0D60 0D70 0D80 0D90 0DA0 0DB0 0DC0 0DD0 0DE0 0DF0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0E00 0E10 0E20 0E30 0E40 0E50 0E60 0E70 0E80 0E90 0EA0 0EB0 0EC0 0ED0 0EE0 0EF0 U 0hr1hr2hr3hr4hr5hr6hr7hr8hr9hrA B C D E F 0F00 0F10 0F20 0F30 0F40 0F50 0F60 0F70 0F80 0F90 0FA0 0FB0 0FC0 0FD0 0FE0 0FF0 代码1: publicclassTestVar07{publicstaticvoidmain(String〔〕args){定义字符类型的变量:charch1a;System。out。println(ch1);charch2A;System。out。println(ch2);charch34;System。out。println(ch3);charch4中;System。out。println(ch4);charch5?;System。out。println(ch5);java中无论:字母,数字,符号,中文都是字符类型的常量,都占用2个字节。charch6;System。out。println(ch6);字符类型:单引号引起来的单个字符System。out。println();转义字符:将后面的普通字符转换为特殊含义charch7;System。out。println(aaach7bbb);System。out。println(aaabbb);换行System。out。println(aaaaaaabbb);制表符System。out。println(aaabbbb);aabbbb向前退一格System。out。println(aaarbbb);bbbr将光标到本行开头:回车System。out。println(java);将双引号原样输出将单引号原样输出将原样输出}} 代码2: publicclassTestVar08{publicstaticvoidmain(String〔〕args){charch1A;System。out。println(ch1);ASystem。out。println(ch190);155System。out。println(155ch1);90char类型我们看到的样子就是它本身的字面常量,但是底层在进行计算的时候,实际上是按照一个码进行计算的。这个码就是ASCII之前说char类型是按照Unicode码表进行存储的(Unicode兼容了ASCII码,Unicode的前128位置ASCII)charch2中;System。out。println(ch2);中System。out。println(ch290);20103System。out。println(20103ch2);90转换:intnum1(int)ch2;System。out。println(num1);20013charch(char)20013;System。out。println(ch);intnum2中;charch520013;System。out。println(ch5);面试题:charch622;System。out。println(ch6);44}} 编码和字符集 【1】什么是编码? 【2】通过生活案例 【3】由权威机构形成的编码表才可以称之为:字符集 ASCII 英文字符集 用一个字节的7位表示 IOS88591 西欧字符集 用一个字节的8位表示 GB2312 简体中文字符集 最多使用两个字节编码 PS:中文:2个字节 GB2312兼容了ASCII中的字符: GBK GB2312的升级,加入了繁体字 最多使用两个字节编码 疑问: 首位如果是0:一个字节代码代表一个字符 首位如果是1:那么一个字节不够,要加上后面的字节才能完整的表示一个字符。 Unicode 国际通用字符集,融合了目前人类使用的所有字符。为每个字符分配唯一的字符码。 退出了UTF标准: 三种编码方案:UTF8,UTF16,UTF32 以UTF8为案例讲解: 中文:珊》Unicode:29642 底层存储: UTF8标准最多可以用6个字节表示: 以后我们用的最多的就是UTF8 解释乱码问题 用记事本选择编码方法的时候一般要选择为ANSI》获取当前操作系统的编码格式:GBK 四、布尔类型 boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用0或非0的整数替代true和false,这点和C语言不同。boolean类型用来判断逻辑条件,一般用于程序流程控制。 publicclassTestVar09{publicstaticvoidmain(String〔〕args){创建一个布尔类型的变量:booleanflag1System。out。println(flag1);booleanflag2System。out。println(flag2);booleanflag359;System。out。println(flag3);booleanflag459;System。out。println(flag4);}