2.2-全栈Java笔记:常用的三类八种基本数据类型

基本数据类型(primitive  data  type)

•Java是一种强类型语言,每个变量都必须声明其类型。

•Java的数据类型分为两大类:基本类型(primitive type)和引用类型(reference type)

•Java中定义了3类8种基本数据类型

逻辑型-boolean

文本型-char

数值型-byte,  short,  int,  long, float,  double

注意事项

·引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!我们学习面向对象后,重点学习引用数据类型。

整型变量/

整形变量

整型用于表示没有小数部分的数值,它允许是负数。

整型的范围与运行Java代码的机器无关,这正是Java程序具有很强移植能力的原因之一。于此相反,C和C++程序需要针对不同的处理器选择最有效的整形。

类型占用存储空间表数范围

Byte1字节-128~127

Short2字节-215~ 215-1 (-32768~32767)

Int4字节(-2147483648~2147483647) 约21亿

Long8字节-263~ 263-1

1)Java语言整型常数的三种表示形式:

十进制整数,如:99, -500, 0。

八进制整数,要求以 0 开头,如:015。

十六进制数,要求 0x 或 0X 开头,如:0x15 。

2) Java语言的整型常数默认为int型,声明long型常量可以后加‘ l ’或‘ L ’,如:

long a = 55555555;  //不出错,在Int表示的范围内(21亿内)。

long b = 55555555555;//不加l出错,已经超过int表示的范围。报错:

报错 The literal 55555555555 of type int is out of range

所以我们需要修改代码为:

longb = 55555555555L;

浮点型变量/常量

带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型。

类型占用存储空间表数范围

Float4字节-3.403E38~3.403E38

Double8字节-1.798E308~1.798E308

1) float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。

2) double表示这种类型的数值精度是float类型的两倍,又被称作双精度,绝大部分应用程序都采用double类型。

3) Java浮点类型常量有两种表示形式

十进制数形式,例如:      3.14       314.0      0.314

科学记数法形式,如: 314e2      314E2      314E-2

【示例1】使用科学记数法给浮点型变量赋值

double f = 314e2;  //314*10^2-->31400.0

double f2 = 314e-2; //314*10^(-2)-->3.14

4)Float类型的数值有一个后缀F/f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D/d, 以明确其为double类型:

老鸟建议:

浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

【示例2】浮点数的比较

floatf = 0.1f;

doubled = 1.0/10;

System.out.println(f==d);

【示例3】浮点数的比较二

floatd1 = 423432423f;

floatd2 = d1+1;

if(d1==d2){

System.out.println("d1==d2");

}else{

System.out.println("d1!=d2");

}

图1示例2运行效果图

图2示例3运行效果图

出现上图所示的主要理由:由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近,但不等于。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。

Java.Math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。

菜鸟雷区:

不要使用浮点数进行比较!很多新人甚至很多理论不扎实的有工作经验的程序员也会犯这个错误!需要比较请使用BigDecimal类

【示例4】使用BigDecimal进行浮点数的比较

import java.math.BigDecimal;

public class Main {

public static void main(String[] args) {

BigDecimal bd = BigDecimal.valueOf(1.0);

bd = bd.subtract(BigDecimal.valueOf(0.1);

bd = bd.subtract(BigDecimal.valueOf(0.1);

bd = bd.subtract(BigDecimal.valueOf(0.1);

bd = bd.subtract(BigDecimal.valueOf(0.1);

bd = bd.subtract(BigDecimal.valueOf(0.1);

Syetem.out.println(bd);

Syetem.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);

}

}

浮点数使用总结

默认是double类型

浮点数存在舍入误差,数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

避免比较中使用浮点数,需要比较请使用BigDecimal类

字符型变量/常量

·字符型在内存中占有2个字节,在Java中使用单引号来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示含有一个字符的字符串。

·char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符。

【示例5】字符型举例

char eChar = 'a';

char cChar ='中';

Unicode具有从0到65535之间的编码,他们通常用从’\u0000’到’\uFFFF’之间的十六进制值来表示(前缀为u表示Unicode)

【示例6】字符型的十六进制值表示方法

char c = '\u0061';

Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义。

【示例7】转义字符

char c2 = '\n';  //代表换行符

转义符含义Unicode值

\b退格(backspace)\u0008

\n换行\u000a

\r回车\u000d

\t制表符(tab)\u0009

\“双引号\u0022

\‘单引号\u0027

\\反斜杠\u005c

注:以后我们学的String类,其实是字符序列(char sequence)。

bolean类型:

• boolean类型有两个值,true和false,在内存中占一位(不是一个字节),不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。

• boolean类型用来判断逻辑条件,一般用于程序流程控制。

【示例8】boolean类型

boolean flag ;

flag = true;   //或者flag=false;

if(flag) {

// true分支

} else {

//  false分支

}

老鸟建议:

Less is More!!请不要这样写:if ( is == true && done == false ) ,只有新手才那么写。

关键也很容易写错成if(is=true),这样就变成赋值is为true而不是判断!

「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。

笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop

F-Linux和Hadoop

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容