数据类型及其运算

8种基本数据类型

整数类型

byte short int long

浮点数类型 (小数)

float  double

字符类

char

布尔类型

boolean (真,假)

语法:

类型 变量名;

或者

类型  变量名 = 值;

注意:

变量的类型要与值的类型一致

变量的名称, 要求必须 字母 数字 或 _ 或 $, 数字不能开头

整数类型分了4种

byte          1 个字节       字节        -2^7  ~  2^7 -1

-128 ~  127

short         2 个字节       短整型      -2^15  ~ 2^15-1

-32768 ~ 32767

int           4 个字节       整型       -2^31  ~ 2^31-1

long          8 个字节       长整型     -2^63  ~ 2^63-1

1024 字节 是1 k

1024 * 1024 个字节 是1M

1024 * 1024 *1024 是 1G

8 * 1024 * 1024 * 1024 * 8 个 bit  = 8G

byte

二进制            十进制

0000  0000        0

0000  0001        1

0000  0010        2

0000  0011        3

...

java中最高位代表符号位,符号位0代表正数,符号位1代表负数

负数的存储方式:

符号位的1理解为 -128

1111 1111         -1     -128 + 127 = -1

0000 0001

1111 1111

10000 0000

整数运算:

+

-

*

/   除法 :只保留商,会忽略掉所有小数(没有四舍五入)

不能够除0

%   求余数:

例如: 5%3得 2

浮点类型:

float          单精度浮点数       4个字节

double        双精度浮点数       8个字节

最高位表示符号位, 0 正数 1 负数

float  8  指数  23 小数

大于此2^24数字的,不能够精确保存

换算为10进制 16 777 216

double     11 指数  52 小数

大于此2^53数字的,不能够精确保存

十进制            二进制        科学计数法

9.5        =>     1001.1        1.0011 * 2^3

浮点数运算:

Java中有精确计算的类

1. 精度问题

float小数点后只能精确保存6 ~ 7 位10进制数

double 小数点后只能精确保存14~ 15位10进制数

2. 赋值时

float的值后必须加f/F结尾, jdk8之后可以不加

double的值后可以加d/D结尾

3. 他们用来表示小数时,对于很多小数是一个近似值

例如: 2.0 - 1.1

字符类型 char

character 两个字节

它可以表示一个任意字符(字母,数字,汉字)

十六进制

0   1   2   3   4   5   6   7   8   9   a   b   c   d    e    f   10

十进制

0   1   2   3   4   5   6   7   8   9  10  11  12 13 14   15   16

掌握三种赋值方法:

char a = ‘B‘;

char a = 66;

char a = ‘\u0042‘

asc ii 码表 : 英文字符与数字的对应关系

unicode 码表: 用两个字节表示,全球所有字符与数字的对应关系(汉字,阿拉伯...)

转义字符

char a  = ‘B‘;

char b = ‘‘‘;  错误

\特殊字符    char b = ‘\‘‘  正确

/ 斜杠

\ 反斜杠

\\   代表真正的 \

\‘   代表真正的 ‘

\"   代表真正的 "

\n  换行

\r   window 特有, 回车

\t   制表符 (特殊空格 , 相当于Tab键)

布尔类型

(没有长度)

true(真)   false(假)

boolean b = true;

boolean c = false;

逻辑运算

与 And: 两个条件都为true,最后结果才为真 &&

a      b      结果

true   true   true

true   false  false

false  true   false

false  false  false

或 Or: 两个条件只要有一个为true,结果就为true ||

a      b      结果

true   true   true

true   false  true

false  true   true

false  false  false

非Not: 取反!

a      结果

true   false

false  true

String 类型

char 存储一个字符

String 由多个char组成, 可以存储多个字符

String a = "多个字符";

与基本类型不同,它可以有一些方法、属性

算数运算:

+ - * / %

自增,自减运算符 (难点 重点)

++(自增) 在a原有值基础上加1

--(自减) 在a原有值基础上减1

int a = 0;

a++;       a  1

a--;       a  0

a--;       a -1

int a = 0;

++a;       a  1

int a  = 5;

int b = (a++) + (++a);

System.out.println(b);  // 12

结论:

a++ 先运算,再自增

++a 先自增,再运算

类型转换问题

byte short int long float double

char

规则1: 小的类型可以赋值给大的类型(安全)

byte a = 2;

int b = a;

规则2:大的类型不能直接赋值给小的类型,强制转换(不安全)

int a = 2;

byte b = a ; // 错误

byte b = (byte)a;  // 强制转换,可能会引起数据的丢失

丢失的例子:

int a = 300;

byte b = (byte)a;  // 44

正数变为负数的例子:

int a = 130;

byte b = (byte)a;  // -126

类型自动提升:

int a = 10;

double b = 10.0;

double c = a + b;

// a被提升为double类型

规则1: 遇到了这三个类型之一: long, float, double, 找到其中最大的类型进行转换,再运算

规则2: 如果没有long, float, double, 你的变量是 byte, short , char, int  参与算数运算,都会转换为int再运算

规则3:字符串  可以有 +

"aaa"  +  "bbb" = "aaabbb"

字符串可以与任意其他类型做+法,结果把其他类型与此字符串拼接为新的字符串

比较运算符

>  大于

>= 大于等于

< 小于

<= 小于等于

== 判断是否相等 , float 和 double如果超出精度,不能用==判断

!= 判断是否不等

返回一个布尔值 true  false

逻辑运算符

短路特性: 对于&& 第一个条件为false && 之后的运算就不会执行了

int a = 6;

boolean b =  10 < 5 && a++ > 4;

请问a的值是多少?

对于|| 第一个条件为 true, || 之后的运算就不会执行了

增强的赋值运算符(了解)

int a = 10;

a = a + 2;

a 结果是12

增强赋值运算:

int a = 10;

a += 2;  // 先把a+2,再赋值给a,等价于 a = a+2

-=  *=  /=  %=

a -= 2;  // a = a - 2

a *= 2;  // a = a * 2;

....

位运算符 (了解)

&  |  ^  ~

& 按位与 (

0 & 0 = 0

0 & 1 = 0

1 & 0 = 0

1 & 1 = 1

2  &  3

0000 0010 二进制的 2

0000 0011 二进制的 3

0000 0010 结果是2

2  |  4

0000 0010 二进制的 2

0000 0100 二进制的 4

0000 0110 结果是6

~ 2非

0000 0010 二进制的 2

1111 1101 结果 -3

异或

0 ^ 0 = 0

0 ^ 1 = 1

1 ^ 0 = 1

1 ^ 1 = 0

2  ^  3

0000 0010 二进制的 2

0000 0011 二进制的 3

0000 0001 结果是1

byte a = 2;

byte b = 3;

int c = a ^ b;

移位运算符(了解)

>> n    算数右移 符号位不动,右移n位,空出来的位,正数补0负数补1

右移 1位 相当于/2

右移 2位 相当于/4

...

<< n   算数左移  符号位不动,左移n位,空出来的位,补0

左移1位 相当于*2

左移2位 相当于*4

...

>>>    逻辑右移 符号位会一起向右移动

例如: -4 >>> 1 = 2147483646

变量的作用范围

从变量的定义开始,直到它所在的{} 的结束}位置,是这个变量的作用范围

同一个块作用域内,变量名不能重复

同名变量的作用范围不能有交叉

作业

1. 有如下代码:

int a = 5;

int b = (a++) + (--a) + (++a);

分析执行过程,说出b的结果是多少?

2.一个三位数,求其个位+十位+百位的和

时间: 2024-10-29 04:03:29

数据类型及其运算的相关文章

基本数据类型-位运算-字符集-流

基本数据类型-位运算-字符集-流 1.基本类型 类型 字节数 范围 byte 1 -128 ~ 127 short 2 -32768 ~32767 int 4 \(- 2^{31}\) ~ $ 2^{31} - 1$ long 8 float 4 double 8 boolean 1 char 2 注意:short.char.byte参与运算时直接抬升到int型. 思考题: 0是整数还是负数? 字节数-128在内存中的存储形态是如何的? 字节范围为何是从-128到127之间,而不是-127到正的

java基本数据类型及运算的注意事项

java基本数据类型及运算的注意事项 一.基本数据类型 ? 序号 类型 位数 范围 说明 整数类型 (最高位为符号位) byte 8位 -128(-27)~127(27-1) 默认类型为int 二进制0b开头 八进制0开头 十六进制0x开头 short 16位 -32 768(-215)~32 767(215-1) int 32位 -2 147 483 648(-231)~2 147 483 647(231-1) long 64位 -9 223 372 036 854 775 808(-263)

JAVACard 基本数据类型的运算及溢出问题

一.数据的运算 在目前javacard开发中,能用到的基本数据类型是byte和short,而对与java来说这两种都是有符号的数,因此在基本运算时会有大量的强制类型转换,因此经常导致数据溢出的情况,为了以后少掉进坑里,这里做简要的记录. 当整数的数据大小超出了可以表示的范围的时候,而程序又没有做数值检查,就会发生数据溢出的问题.例如对于byte的整数来说,其表示的范围大小是-128~127:short类型的基本数据的取值范围为-32768~32767.在javacard中大部分涉及到byte数据

java数据类型和运算优先级

一.数据类型 1.基本数据类型: . 布尔类型:boolean(true,false) . 整型:byte(-128,127).short(-32768,32767).int(-2147483648,2147483647).long(-9223372036854775808,9223372036854775807).char(\u0000' ,'\uffff) . 浮点数:float(1.4E-45,3.4028235E38).double(4.9E-324,1.7976931348623157

Java的基本数据类型和运算

编码 ASCII--0~127  65-A  97-a 西欧码表---ISO-8859-1---0-255---1个字节 gb2312----0-65535---gbk---2个字节 Unicode编码体系---utf-8---3个字节 中  f bit位 Byte字节 1Byte = 8bit   1KB=1024B  MB GB TB PB---计算机中存储单位 常量 整数常量---所有的整数 3,99,107 小数常量---所有的小数  3.5  100.9 字符常量---用单引号将一个字

JavaScript基本数据类型和运算

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <script type="text/javascript"> function test1(){ window.alert("你点击了button"); } function test2(

#6 Python数据类型及运算

前言 前文讲述了Python的输入输出以及变量的相关知识点,本节将探讨Python的数据类型以及数据之间的运算方式! 一.Python数据类型 上一节弄清了变量,其实变量所指向的值是有自己独特的数据类型的,这些数据类型可能代表不同的数据,在Python中,主要有以下几种数据类型: 整形(int) 在计算机中,整数的位数其实是有范围的,并没有我们想象的那样拥有无限的位数,而且,在不同的机器上整数的位数可能不同,例如: 32位系统:整数的位数就是32位,寻址范围为:-231  ~  231-1 ,即

Python的数据类型和运算

一.Python数据类型 变量所指向的值是有自己独特的数据类型的,这些数据类型可能代表不同的数据,在Python中,主要有以下几种数据类型: 整形(int) 在计算机中,整数的位数其实是有范围的,并没有我们想象的那样拥有无限的位数,而且,在不同的机器上整数的位数可能不同,例如: 32位系统:整数的位数就是32位,寻址范围为:-231 ~ 231-1 ,即-2147483648 ~ 2147483647 64位系统:整数的位数就是64位,寻址范围为:-263 ~ 263-1 ,即-92233720

Java数据类型及运算

(一),Java基本类型及运算 注释:可以用于生成API: 命令如:javadoc -d apidoc windowtitle hhh -doctitle aaa  -header bbbb -version -author *HelloWorld.java 注意点: 1,标识符只能是字母,数字,下划线和$,其中数字不能作为开头 2,基本类型:1个字节对应于计算机的8位二进制,计算机以补码的形式存取整数,即正数的补码为其本身,而负数的补码为其反码(处最高位,其余位取反)然后加一 3,类型装换:小