Java学习笔记--数据类型和运算符

来源:互联网 发布:mac五笔型只有字根 编辑:程序博客网 时间:2024/04/30 12:07

数据类型和运算符

变量和常量和表达式:

1):常量:

    字面值常量:就是指一个直接写出来的值。如:整数常量1,2;小数常量1.1;布尔常量TRUE,FALSE

    定义的final变量

2):变量:

 定义:

表示存储空间,可用来存放某一类型的常量值,没有固定值并且可以重复使用,

也可以用来存储某种类型的位置数据。

        1):先定义变量再赋值

                数据类型 变量名;

                变量名 = 值;

        2):在声明的同时赋值

                数据类型 变量名 = 值;

特点:

1):占据着内存中的某一块存储区域;

 2):改区域有自己的变量名和数据类型;

 3):可以被重复使用;

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

分类:根据变量定义在类中的位置不同,可以分为两大类

 1):成员变量:直接定义在类里的变量,又称全局变量或字段。

 2):局部变量:变量除了成员变量外,其他的就是局部变量。根据定义的位置

               不同有3中表现形式:方法形参、方法内变量、代码块变量。

作用域:

指变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量

  被定义时,它的作用域就确定了,即为定义开始到定义所在花括号结束。

使用规则:

  1):变量必须先声明,并且初始化后才能使用;

  2.):声明变量必须有数据类型;

  3):同一作用域内的变量不能重复定义;

Java表达式:

  是由数字、运算符、数字分组符号(括号)、变量等以能求得结果的有意义排列的组合。用运算符号连接的变量/常量可称为表达式。那么也就是说表达式是由常量、变量、运   算符、括号组成能求得值的有意义结果的语句。

  如:

  a

  a + b

  3.14 + a

  (x + y) * z + 100

  表达式中操作数进行运算得到的最终结果就是表达式的结果。

  表达式的运算顺序(大多和数学一样,参照后面的运算符操作优先级):

 

数据类型:


1):基本数据类型,又称为原生数据类型

        8大基本数据类型:

①  整数类型:byte、short、int、long(仅仅是容量大小不一样而已)

整数类型的四种表现形式:

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

    八进制整数:0开头,如:int a = 01;

    十进制整数:如:int a = 1;

    十六进制整数:0X或0x开头,如:int a =0X1

Java语言的整数类型默认是int型,声明long类型后加上“l”或“L”,因为小写l容易和数字1混淆,所以建议使用大写L

            ② 浮点类型:float、double

                   浮点类型的两种表示形式:

                       直接使用小数表示,如float a = 3.14;

                       使用科学计数法表示如float a = 3.14E2;(3.14乘以10的平方)

                   Java语言的浮点类型默认是double型,声明float类型后加上“F/f”,注意无论是float还是double类型都不能精确表示一个小数,子开发中表示精确的数,比如金钱,用BigDecimal类来解决

            ③ 字符类型:char

                   表示16位的无符号整数或者Unicode字符,Java对字符采用Unicode字符编码。Unicode收集了世界上所有语言文字中的字符,是一种跨平台的编码方式,Java的字符占两个字节,正好可以表示一个汉字。

                   字符类型的三种表现形式:

                       直接使用单个字符来指定字符常量,如’A’;

                       直接作为整数类型使用但是数值范围在[0,65535];如97但是打印出来的值依然是ASCII码表对应的字符,如97打印出来的是a;

                       和上一种一样只不过表示的是16进制的数值,如’\uoo61’打印a;

            ④ 布尔类型:boolean(true/false);

通常用于逻辑运算和程序流程控制该类型的值只能是true或false表示真或假,在Java中整数类型与布尔类型不相容,因此不要采用整数类型进行条件测试

              

2):引用数据类型,又称为对象数据类型(类、接口、数组)

         最常用的引用类型—String类(字符串)

         除了8种基本数据类型,其他所有类型都是引用数据类型,包括类、接口、数

         组。引用数据类型默认初始值都是null。字符串都得使用””括起来表示,连

        接字符串使用“+”符号。任何数据类型和String类型相连接结果都是新的

        String字符串。

基本数据类型转换

1):数据过大和溢出

        当要表示的数据超出数据类型的临界范围时称为溢出。溢出情况发生时程序并没

        有做数据范围检查处理,此时会出现数据紊乱的情况。

        举例:int类型的范围[-2147483648, 2147483648]

              当数据等于2147483648时+1会产生数据溢出,此时结果为-2147483648

              当数据等于-2147483648时-1会产生数据溢出,此时结果为2147483648

2):基本数据类型转换:

方式1:自动转换,也称隐式类型转换

                当把小数据范围类型的数值或变量赋给另一个大数据类型范围变量,系统可以完成自动类型转换,这好比把装500ML水的容器内的水倒入1L的容器内,可以完成且不会造成水溢出,即发生精度损失。

                注意:在8大基本数据类型中boolean不属于数值类型因此不可以转换为其他数据类型。

       

方式2:强制转换,也称显示类型转换。

                当把大范围类型的数值或变量赋给另一个小范围类型变量时,此时系统不能自动完成转换,需要加上强制转换符,但这样的操作可能造成数据精度的降低或溢出,所以使用时要格外注意,这就好比把装1L水的容器内的水倒入500ML的容器内,不能自动完成,但是如果要强制完成可能会造成水溢出,即可能发生精度损失或溢出。

                格式:(强制要转换的类型) 数据名  如(int) a;

               

3):表达式类型的自动提升:

       当一个算术表达式中包含多个基本数据类型(boolean除外)的值时,整个算术表达式的数据类型将在数据运算时出现类型的自动提升,其规则为:byte、short、char类型被自动提升为int类型;整个表达式的最终结果类型被提升到表达式中类型最高的类型(任何类型的数据值和String相连接,结果都是String类型)举例:a = 123+1.1F+99L+3.14最终a的类型为double,但是如果再加一个String类型的字符串则最终a的类型会变为String。

       注意: short a= 17; short b = a + 5;这样的表达式错误的,因为5默认是int类型,所以a + 5经过自动提升后会变为int类型,而int类型转换为short有可能发生精度损失,所以不能自动完成转换,因而是错误的。

 

运算符:

1):算数运算符


加号:在操作数值、在操作数值、字符、字符串时其结果是不同的,当两个字符相加得到的是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。

唯一的区别是:

前置(++result): 表示对result加1之后的结果进行运算,

后置(result++): 表示对变量加1之前的值(原始值)进行运算。

如果仅仅执行简单的递增操作(只写result++或++result),那么选用任意一个都可以。

2):赋值运算符


赋值运算符专门为变量指定值或重新指定值。Java支持同时给多个变量赋值

3):比较运算符


比较运算符用于比较两个变量或常量之间的关系,比较运算符的结果是boolean类型

其操作格式为:boolean result = 表达式A 比较运算符 表达式B

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

4):三元运算符

    格式:boolean类型表达式 ?  值1: 值2;

          如果boolean表达式结果为true,则结果为值1,否则结果为值2

    举例:int a =5; int b = 6; int ret =  a >=b ? a :b;

          此代码实现两个数比较选数值大的,因此结果为6

5):逻辑运算符


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

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

&&:和&结果相同,但是具有短路效果,如果左边操作数A是false,则result一定为

     false并且不会去做B的运算

|:表示或者,A和B都为false结果为false,只要A或B有一个是true则结果为true

||:和|结果相同,但是具有短路效果,如果左边操作数A是true,则结果result一定

   为true并且不会去做B的运算

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

!:取反,!true的结果是false,!false的结果为true

6):位运算符


循序规则:0看成是false,1看成是true

&:参与运算的两个数,若相应位数的值都为1,则该位结果值是1,否则是0。

|:参与运算的两个数相应位中只要有一个1,结果就是1。

^:参与运算的两个数相应位相同则结果为0,否则为1。

~ :表示把每个二进制位的“1”换成“0”,把“0”换成“1”。

移位操作:

<<:将操作数的二进制码整体左移指定位数,左移之后的空使用“0”来补充。

>>:将操作数的二进制码整体右移指定位数,右移之后的空使用“符号位”来补充:

        若是正数使用“0”补充;

        若是负数使用“1”补充;(操作负数:取反,求补,操作,取反,求补)

>>>:将操作数的二进制码整体右移指定位数,右移之后的空位使用“0”来补充。


7):运算符的操作优先级




注明:

本文为学习记录笔记,不喜勿喷。

参考文章:小码哥Java教程

 

0 0
原创粉丝点击