<<风雨安卓路之JAVASE----(2)类型和运算>>

常量和变量
常量:程序中固定不变化的值。
变量的定义:表示存储空间,可用来存放某一类型的常量,没有固定值,并可以重复使用,也可以用来存储某种类型的未知数据。

常量分类:

字面值常量:直接给出的一个值,比如:整数常量1,2,3,小数常量3.14,布尔常量false,true等。
定义的final变量:后讲.

变量的特点:

① 占据着内存中的某一块存储区域;

② 该区域有自己的名称(变量名)和类型(数据类型);

③ 可以被重复使用;

④ 该区域的数据可以在同一类型范围内不断变化;


变量的分类:

随着变量定义在类中的位置不同,故把变量分成两大类:

成员变量:直接定义在类里的变量,方法外面,又称为全局变量或字段。

局部变量:变量除了成员变量之外,其他就是局部变量。根据定义的位置不同有3种表现形式:

方法形参,方法内变量,代码块变量。

变量作用域:

指变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就确定了:
作用域是定义开始到定义所在的花括号结束;

基本数据类型转换
前面谈到变量的时候,说变量是有类型的,那么Java数据有多少和哪些类型呢?总得来说,分成两种:
① 基本数据类型,又称为原生数据类型;

② 引用数据类型,又称为对象数据类型;

java的基本数据类型.png

布尔类型(boolean):
boolean类型:通常用于逻辑运算和程序流程控制。

该类型的值只能是true 或 false,表示真或假。

不可以使用0或非0的整数来代替false和true,区分于C语言。
整数类型(byte-short-int-long):
byte < short < int < long类型:

各自表示的数据范围是不一样的.

整型常量的四种表示形式:

① 二进制整数:0B或0b开头(Java7的新特性),如:int a = 0B110;

② 八进制整数:要求以0开头,如 int a = 012;

③ 十进制整数:如:int a = 17;

④ 十六进制整数:要求0X或0x开头,如int a = 0x12;

Java语言的整型常量默认是int型,声明long型变量后加上‘l’或‘L,因小写的l容易和数字1相混淆,建议使用大写L。

默认情况下,一个整型的字面量默认是int类型.
小数类型(float-double):
根据精确度细分为:
float、double类型:
表示小数类型又称为浮点类型,其中float表示单精度类型,double表示双精度类型,但是二者都不能表示精确的小数。

Java的浮点类型常量有两种表现形式:

十进制形式: 例如:3.14 ,168.0, .618

科学计数法形式: 例如:3.14e2, 3.14E2, 1000E-2

科学计数法表达式返回的结果是double类型。

默认情况下,一个小数类型的字面量默认是double类型.若要声明一个常量为float型,则需在常量后加上f 或 F,double常量后面的D或d可省略。

注意:Java里只有浮点型的变量才可以接受科学计算式结果:

因为float和double都不能精确的表示小数,那么在精度要求高的系统比如银行系统里,那怎么表示精确的小数呢?后面我们会讲BigDecimal类型,它表示任意精度的数据。
char类型:表示16位的无符号整数或者Unicode字符,Java对字符采用Unicode字符编码。

Unicode收集了世界上所有语言文字中的字符(符号),是一种跨平台的编码方式,Java的字符占两个字节,可以表示一个汉字。

什么是编码?

计算机只能表示0和1两个数,于是人们做规定使用一个数字去表示一个特定的字符,比如a使用97表示。

char前256个字符和ASCII(美国信息交互标准编码)码中的字符重复。


char常量有3种表示形式:

① 直接使用单个字符来指定字符常量,格式如'◆'、'A','7',注意使用单引号括起来;

② 直接作为十进制整数数值使用,但是数据范围在[0,65535],格式如97,但是打印出来的值依然是ASCII码表对于的符号,如97打印出来是字符a。

③ 和2一样,只不过表示的是16进制的数值,格式如'\uX',X表示16进制整数;如:97的16进制是61。那么表示为‘\u0061’打印出来也是a。

所以有人说char本质上也是整型,也是有道理的。

char前256个字符和ASCII(美国信息交互标准编码)码中的字符重复,可查表。

ASCII字符代码表一.png

当要表示的数据超出数据类型的临界范围时,称为溢出。

int intMax = 2147483647;//int最大值

intMax = intMax + 1;//编译时只检查语法,所以不报错

System.out.println("intMax + 1= " + intMax);

int intMin = -2147483648;//int最小值

intMin = intMin - 1;

System.out.println("intMin - 1= " + intMin);

分析数据发生紊乱的原因:溢出情况发生时程序并没有做数据范围检查处理,此时会出现数据紊乱情况。
基本数据类型转换:
--
在8大基本数据类型中,boolean不属于数值类型,不参与转换.


转换规则其实就是各自数据类型的空间大小.
数据类型的转换操作,分两种:
1):自动类型转换.(把小类型转换为大类型)
--
2):强制类型转换.(把大类型转换为小类型)


自动类型转换,也称为“隐式类型转换:

当把小数据范围类型的数值或变量赋给另一个大数据范围类型变量,系统可以自动完成类型转型。这好比把装一斤水容器里的水倒进可以装两斤水的容器里一样。

再次强调:boolean 类型是不可以转换为其他数据类型。

强制类型转换,也称为“显示类型转换:

当把大范围类型的数值或变量赋给另一个小范围类型变量时,此时系统不能自动完成转换,需要加上强制转换符,但这样的操作可能造成数据精度的降低或溢出,所以使用时要格外注意。

基本数据类型的转换.png

算术运算符
Arithmetic operators

用来处理四则运算的符号


加号:在操作数值、字符、字符串时其结果是不同的,当两个字符相加得到的是ASCII码表值,当两个字符串相加时表示将两个字符串连接在一起,从而组成新的字符串。

除号:整数在使用除号操作时,得到的结果仍为整数(小数部分忽略),当整数除以0的时候,会引发算术异常。

  正无穷大(Infinity):当一个正浮点类型数除以0时,或者正整数除以0.0时;

         负无穷大(-Infinity):当一个负浮点类型数除以0时,或者负整数除以0.0时;

         NaN(Not a Number):当0.0除以0.0时;

取模:模数的符号忽略不计,结果的正负取决于被模数.

注意:无穷大和NaN都属于double浮点类型,但是所有正无穷大都是相等的,所有负无穷大也是相等的,NaN永远不相等,也不等于自己.


++和--操作:
自增:++,递增操作符,使变量值增加1,有前置和后置之分,只能操作变量。

自减:-- ,递减操作符,使变量值减去1,有前置和后置之分,只能操作变量。

自增和自减具体操作是一样的,仅仅是一个是加1,一个是减1而已,现在单讲++:

代码 result ++和 ++result,都将使result变量的值加1。


赋值运算符
assigning operator

专门为变量指定值或重新指定值


注意Java支持同时给多个变量赋值,好比支持同时声明多个变量一样,但因影响代码可读性,故也不推荐。

每一个变量单独定义,并单独赋值.
加等于:x += 5; 相当于 x = x + 5,但还包括隐式类型转换。

public class Hello{

public static void main(String[] args){     
    int a, b, c;      //不推荐
    a = b = c = 5; //不推荐
    short s = 5;
    //s = s + 3;//编译出错,需要强转  s = (short)(s + 3); 
    s += 3;//编译OK,隐式类型转换
}

}


比较运算符
comparison operator

用于比较两个变量或常量之间的关系,比较运算符的结果是boolean类型,其操作格式为:

boolean result = 表达式A 比较运算符 表达式B;


==:等于,若比较的是两个操作数都是数值类型,即使他们的类型不同,只要值相同就返回true。

当然==也可以比较引用数据类型,留到后面讲。

instanceof:在讲面向对象的时候,再细讲。


public static void main(String[] args){

    System.out.println(65 == 'A');//true

    System.out.println(1.0 == 1);//true

    System.out.println(true == false);//false



    System.out.println(5 >= 5);//true

    System.out.println(5 >= 5);//true

    System.out.println(5 != 5);//false

}

三元运算符
ternary operator

现在给一个小数,需要求出其四舍五入之后的结果,怎么完成该功能?

思路:取得整数部分,再取得小数部分,再判断小数部分和0.5的大小关系,若大于等于,结果就是整数部分加1,否则就是整数部分。

三元运算符,表示有三个元素参与的表达式,所以又称为三目运算符,其语义表示if-else.

语法格式:X ? Y :Z, 其中x为boolean类型表达式,先计算X的值,若X结果为true则整个三目运算表达式的结果是Y,否则就是Z。三目运算符结果的类型由Y和Z决定。
逻辑运算符
logical operator

分析下列语句什么意思:(AND,OR)
张三和李四周末要值班:二者都来值班才是我期待的结果。

张三或李四周末要值班:二者只要有一个值班就是我期待的结果。

用于操作两个boolean类型的变量或常量,结果类型也是boolean。

语法格式为:boolean result = boolean表达式A 逻辑运算符 boolean表达式B;


&:表示并且,当操作数A和B都为true结果才为true,否则结果result 是false。

&&:和&结果相同,具有短路效果,如果左边操作数A是false,result 一定为false,且不运行B的运算。

|:表示或者,A和B都为false结果result为false,只要有A或B是true,结果就是true。

||:和|结果相同,具有短路效果,如果左边操作数A是true,result一定为true,且不运行B的运算。

^:判断A和B是否不同,不同则为true,相同则为false。

!:取反,!true结果是false,!fasle结果是true。

位运算符

位运算符.png

运算符的操作优先级

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

推荐阅读更多精彩内容

  • 1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或...
    哈哈哎呦喂阅读 637评论 0 0
  • 前言 这个系列是java spring mvc 源码阅读与分析的一个系列阅读源码分支为 spring初始化流程 ...
    金发萌音阅读 790评论 0 1
  • 我们要与自己的脾气摩拳擦掌,要与自己的个性和平共处,不要让自己败在脾气上,付出的一切都敌不过你不可理喻的脾气,也不...
    敏子慧慧阅读 176评论 0 0
  • 我们微商在把自己产品买个客户的时候,难免会遇到给客户提出一些试探性问题,这时候若处理不当的话,那就很有可能使得一笔...
    修正宝儿阅读 343评论 0 0
  • 今天,我和妈妈下去打羽毛球。 激烈的比赛开始了!我和妈妈都做好了准备。首先发球方是高手———妈妈!我很...
    毛毛虫毛毛虫阅读 346评论 1 1