搜索
查看: 1274|: 0

java 系列教程:(2)数据类型和运算符

[复制链接]

42

主题

0

回帖

204

积分

中级会员

积分
204
发表于 2018-3-6 17:05:45 | 显示全部楼层 |阅读模式
一、常量与变量#

直接量

生活中用到的数值,例如:

整数数值:1,23,454 等;

小数数值:3.14,2.3e4 等;

字符型数值:‘a’,‘b’ 等;

布尔型数值: 用来表示真假值,true 、false。

String类型:用双引号括起来的多个字符序列,“move all", ”哈哈“。

null类型:null

变量:是一个保存数据的内存区域的名字。系统在变量定义时为其分配内存空间。

java语言是个强类型语言,所有变量必须显示声明类型。

当数据不确定时,应用。

声明变量语法:

type:数据类型

varName:变量名

如:int i;

两种变量声明方式:

常量:代表程序运行过程中不能改变的值,也就是说,第一次赋值后,不能再赋值。

常量一般都大写

声明常量的语法:

1
final type varName;

所有常量、变量必须先声明,后使用

二、变量分类#

按作用域:成员变量和局部变量 ——讲对象的时候讲

局部变量

代码块内有效

代码块 {}

方法体内有效 —— 讲方法的时候讲

按数据类型:

基本数据类型:包括整形(byte、short、int、long)、浮点型(float、double)、布尔类型(boolean)、字符型(char)

引用数据类型:包括类、接口、数组类型以及空类型

三、基本数据类型#

整数型:包括字节型(byte),短整型(short),整型(int),长整型(long), 它们有符号整数

浮点型:包括浮点型(float),双精度型(double),它们代表有小数精度要求的数字

字符型:包括字符型(char),它代表字符集的符号,例如字母和数字

布尔型:包括布尔型(boolean),它是一种特殊的类型,表示真/假值

(一)整数类型

bit:位

    一个二进制数据01,是1bit;

byte:字节

    一个字节等于8位。

其中定义long类型时,要在整数常量后增加L或l,建议用L,容易区分,如

long value = 103432544354356L;

1、整数字面量表示

十进制:默认的,逢10进1

如:int i= 125;

八进制:整数之前加数字0来表示,逢8进1

如:int j = 071;

十六进制:整数之前加“0x”或“0X”,其中10~15分别以a~f表示(不区分大小写),逢16进1

如:int i = 0xa;

二进制(新加的):整数之前加“0b”或“0B”,逢2进1

如:int j = 0b101;

十进制转二进制方法

这是一个连续除以2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。

如:十进制的6转成二进制 110

二进制加法0b11+0b10 = 0b101,加法方式逢二进一

十进制的30,转换成二进制、八进制、十六进制

二进制转十进制方法

用二进制数值乘以2的幂次依次相加

如:二进制110转换成十进制6

20 0 + 21 1 + 22 * 1 = 0 + 2 +4 = 6

八进制、十六进制与十进制互转原理与二进制一样

将之前十进制的30 转换成其他进制,再转换回十进制

代码示例:

(二)浮点型

浮点型有两种:double 和 float

double:双精度浮点数,一个double类型的数值占8个字节、64位

float:单精度浮点数,一个float类型的数值占4个字节、32位

浮点字面量表示:标准记数法或科学记数法

double pi = 3.14;

double sd =5e-12;

double r = 8E2;

浮点字面量默认是双精度。字面量后面加F或f 表示单精度

float f = 1.1f;

如果要精确计算浮点数(保留几位小数),则要用BigDecimal类(常用于计算金额)

代码示例:

(三)字符型

类型:char

占2个字节

字符型常量的三种表现形式

1、直接通过单个字符来指定字符型常量,例如:‘a'、'1'等

2、通过转义字符表示特殊字符型常量,例如:’\n‘、'\t'等

3、直接使用Unicode值来表示字符型常量,格式是'\uXXXX',其中XXXX代表一个十六进制的整数

  范围是'\u0000'~'\uFFFF',共可以表示 65535个字符

java语言常用的转义字符

除此之外,char类型的值可以直接作为整数类型的值来使用,表数范围0~65535

如:char value = 99;

转义字符示例:

运行结果

(四)布尔型

布尔型只有一个boolean类型,用于表示逻辑上的“真” 或 “假”,不能用 0 或者 非0 代表。

true 真
false 假
如:boolean flag = true;
boolean应用流程控制

1 if条件控制语句
2 while循环控制语句
3 do循环控制语句
4 for循环 控制语句
5 三目运算符(? :)中使用

四、类型转换#

在java程序中,不同的基本类型的值 经常需要进行相互转换。

类型转换分为自动类型转换和强制类型转换

(一)自动类型转换

当把一个表数范围 小的数值或变量直接赋给另一个表数范围大的变量时,系统可以进行自动类型转换。

自动向范围大的类型转换 ,混合运算时转成最大的范围类型。

如同将小瓶水倒入大瓶没有问题一样

byte、short 不能自动转换成char

char不能自动转换成byte、short

代码示例:

如同将大瓶子中的水倒入小瓶子,两种结果

①大瓶子中的水 ≤ 小瓶子中的水,小瓶子能承下(强转没问题)

②大瓶子中的水>小瓶子中的水,水溢出(强转会发生截断(按模取余)或者可能溢出)

能强转成功的前提:类型大的数值小于类型小的最大取值范围。

注意:在编程中要尽量避免由于强转导致的非预期结果

代码示例:

五、运算符#

知识点:

算术运算符

位运算符

赋值运算符

关系运算符

逻辑运算符

三目运算符

运算符优先级

(一)算术运算符

表达式类型的自动提升

当一个算术表达式中包含多种数据类型的值时,整个算术表达式的数据类型将发生自动提升。

Java 定义了如下提升规则:

1)所有的byte 类型、short 类型和char 类型将被提升到int 类型。

2)整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。

(二)位运算符


位运算符用来对二进制位进行操作,如果操作数不是二进制,必须转换成二进制后再做位运算

原码:一个整数转换成二进制就是原码,最高位是符号位 0 表示正数 ,1 表示负数

单字节的5的原码为:0000 0101;

          -5的原码为:1000 0101

反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反

单字节的5的反码为:0000 0101;

         -5的反码为:1111 1010

补码:正数的补码就是其原码;负数的反码+1就是补码

单字节的5的补码为:0000 0101;-5 的补码为1111 1011

在计算机中,正数是直接用原码表示的,负数用补码表示

如果是个十进制负数的位运算

① 需要先把负数的二进制数算出(补码) 负数的原码,除符号位按位取反,再加1

② 然后位运算

③ 再把位运算结果算出原码,(补码转原码 → 补码减1得反码,反码除符号位按位取反得原码)

④ 再将原码转换成十进制

位运算在编程过程中基本用不上

(四)关系运算符

关系运算符决定值和值之间的关系,返回布尔型变量

用基本数据类型来做关系运算


版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海牛部落-海牛博士,http://hainiubl.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大数据中国微信

QQ   

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2024-11-15 18:26 , Processed in 0.068672 second(s), 24 queries .

快速回复 返回顶部 返回列表