数据类型及其运算

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.一个三位数,求其个位+十位+百位的和

 

转载于:https://www.cnblogs.com/dadapeng/p/5766105.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值