JAVAse DAY2

2.4 常量和进制

常量

常量:程序中固定不变化的值。比如:整数1,2,3。小数3.14,false,true等。

常量分类

  • 整数常量:所有整数 三类 正整数 零 负整数
  • 小数常量:所有小数
  • 布尔型常量:较为特有,只有两个数值。true false
  • 字符常量:将一个数字字母或者符号用单引号(' ')标识
  • 字符串常量:将一个或者多个字符用双引号(" ")标识
  • null常量:只有一个数值就是null (有时需要给一个变量预留空间)

进制

  • 二进制:每一个二进制数位用0,1;满2进1.
  • 八进制:每一个八进制数位用0,1,2,3,4,5,6,7;满8进1。用0开头表示。
  • 十进制:每一个十进制数位用0,1,2,3,4,5I6,7,8,9;满10进1。满10进1.
  • 十六进制:每一个十六进制数位用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;满16进1。满16进1。用0x开头表示

进制转化

十进制转二进制:十进制转成二进制-->除以2倒取余数
二进制数转十进制数:二进制转成十进制-->按2的幂数展开并累加
 

 进制规律

计算机中是以二进制数据的形式表示所有数据,并且在计算机中把8个二进制数位当做一组,并“字节”来表示。
即:8bit=1Byte(八个二进制数位为一个字节)。那么一个字节能表示的数据是多大呢?也就是当八个二进制数位上全部是1时能表达多大一个数据呢
128+64+32+16+8+4+2+1=255
即当1个字节上全部存放的是1时,这个数据即就是255,0-255之间的任何一个正数都可以在用一个字节表示。

小技巧:对于任意一个十进制数,当要转成二进制时,也可以从上图中的128、64、32、16、8、4、2、1这
些数据加起来。当有某一个数时,就说明这个二进制数位上一定存放的是1,若没有这个数,就说明这个二进
制数位上一定存放的是0

 其他进制转换

发现将一个十进制数转成二进制数时,需要使用很长的01这样的数字表示,很麻烦,不利于书写和阅读,于是就想能不能把这个较长的01数字使用其他形式表示呢?
如果把一个二进制数按照每三个二进制数位为一组划分,发现这三个二进制数位数字能表示大的最大值正好为7,正好符号了八进制的表示形式。于是可以把二进制数用八进制的形式表示二进制转八进制

                    0101  0111 0001   (4位一分开)

0x                  5          7      1     ----十六进制的571

                 010 101 110 001   (3位一分开)

0                 2      5   6    1         ----八进制的2561

负数的表示形式

对于一个负数,它的表示形式非常简单,即用这个负数所对应的正数的二进制数取反然后加1,即可得到这个负数的二进制表现形式。取反的意思是将当前二进制数位上的1变0,0变1

 

变量使用语法

数据类型 标识符 = 初始值

 数据类型

 

布尔型boolean boolean类型

通常用于逻辑运算和程序流程控制 boolean类型数据只允许取值true或false

boolean flag;
flag true;
System.out.println("flag="+flag);

 

 字符型char

char型数据用来表示通常意义上得“字符",char占2字节,的范围是[0,65535],但是前256个表示特殊字符:字符常量为用单引号括起来的单个字符。
例如:

char c ='A';
char c2='传';
char c3=97;


java字符采用Jnicode编码,可用十六进制编码形式表示char c1=\u0061';

 

 转义字符

有部分符号在va有特殊含义,当需要使用符号自身原有的意思时,这时可以通过转义字符表示。
例如:键盘上的制表符tab键。可以使用'\t'表示。
如双引号,在)va中使用双引号表示字符串,若想使用双引号本身含义,即可使用"表示字符编码表"从前面的介绍知道计算机中所有数据都是采用二进制表示的,怎么才能把生活中的这些字符转成二进制表示呢?
为了解决这个问题,专门制作了一张码表,这张码表中就存放所有字符与整数的对应关系。
例如:
'A'->65
'B'.-->66
'a'-->97
'b'-->97
所以当把一个整型数据赋值给char类型数据时,计算机会查码表中这个整数所对应的字符是什么,然后将这个字符存放在char类型的空间中
char ch=65其实是将A存放在ch中

String类型

String不属于基本数据类型,但和字符有一定的联系。String是一个类,表示字符串(后面详讲):就是一串字符也就是多个字符连接在一起;字符串都得使用"括起来的,连接字符串使用+
 

String str;
str="西安鸥鹏互联";
//或String str="西安鸥鹏互联";
//字符串的连接采用+符号。
String s="西安"+"鸣鹏"+"互联";
System.out.println(s);//西安鸣鹏互联

整数类型

整型数据根据数据范围不同,需要使用不同的关键字来表示。
byte、short、int、long这四个关键字都可以在内存中开辟出存放整型数据的空间。
byte开辟1个字节的空间,short开辟2个字节空间,int开辟4个字节空间,long开辟8个字节空间。

byte b=2;//会自动把2转为byte类型存放在b空间
short s=3;
int i=4;
long l=5L;//当把一个值赋给1ong型空间时,需要在数值后面加L或l标注其为long类型

浮点类型

double和float关键字在内存中开辟的空间可以存放小数。double开辟8个字节的空间,float开辟4个字节的空间。
Java浮点类型常量有两种表示方式:

  • 十进制形式:例如:3.14,168.0,.618
  • 科学计数法形式:例如:3.14e2,3.14E2,1000E-2

Java浮点型常量默认是double,则要声明一个常量为float型,则需在常量后加上f或F,如:

double pi=3.14;//正确
float pi=3.14F;//必须加上f,或转型float pi3=(float)3.14;

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

int num 314E2;//错误num为int类型,不可以使用科学计数法 

 

数据类型转换

隐式类型转换

       当在存储整数数据时,Java中所有的整数默认都是int类型的。所以在将-128~127之间的数据储在 byte类型空间中时,JVM会把这个int类型的数据自动转换成byte类型,然后存放在byte空间中。short同理。
   

 byte b=2;//会自动把int类型2转为byte类型存放在b空间

 short s=234;//也会把int类型234转为short类型存放在s空间

当把一个int类型的数据存放在char类型空间中时,也会发生隐式类型转换
 

    char ch=65//这里会用int类型65,到编码表中查找对应的字符,然后将字符存放在ch空间中

    char ch2='A';//直接将A字符存放在ch2空间中

【 注意:当把超过byte和shot范围的数据给他们开辟空间存放会发生编译时错误。同样把无法在编码表中查到对应字符的数据存放到char空间也会报错】

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则

  • 容量小的类型可自动转换为容量大的数据类型(类型自动提升)
  • byte,short,char→int→long→float→double
  • byte,shot,char之间不会相互转换,他们在计算时首先会转换为int类型

强制类型转换

容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度的降低或溢出,使用时要格外注意

强制转换格式:

(数据类型)(被转数据);

long l=123L;

int i=(int)l;

double d =3.14;

float f =(float)d;

byte b = 5;//默认5 是整数 int       把int转为byte类型

Byte. Max_Value 最大的范围到多少127

Byte. Min_Value 最小的范围到多少-128

byte的范围 -2^7~~2^7-1

short -2^15~2^15-1

char ch1=67;//int---->编码表(ascⅡ码,unicode码)

第三章 流程控制语句

3.1if条件语句

单分支if语句

当且仅当条件为true时执行一个动作。

if(布尔表达式){
         语句;
}

省略括号可以让代码更加简短,但是容易产生错误。当你返回去修改略去代码的时候,容易忘记加上括号。这是一个常犯的错误。

双分支if-else语句

当指定条件为true时单分支if语句执行一个操作。而当条件为false时什么也不干。但是,如果你希望在条件为false时也能执行一些动作,那就用这个。
 

if(布尔表达式){
布尔表达式为真时执行的语句;
}else{
布尔表达式为假时执行的语句;
}

嵌套的if语句和多分支if-else语句

if或if-else语句中的语句可以任意合法的java语句,甚至可以是其他的if或if-else语句

3.2常见的错误

常见错误1:忘记必要的括号

 如果块中只有一条语句,就可以忽略花括号。但是,当需要用花括号将多条语句括在一起时,忘记花括号是一个常见的程序设计错误。

常见错误2:在f行出现错误的分号

     这个错误是很难发现的,因为它既不是编译错误也不是运行错误,而是一个逻辑错误,等价于一个空代码块。

常见错误3:对布尔值的冗余测试

     为了检测测试条件中的布尔型变量是true还是false,使用相等比较运算符是多余的。

常见错误4:悬空else出现的歧义

    所以还是该写括号写括号了

常见错误5:两个浮点数值的相等测试

     浮点数具有有限的计算精度:设计浮点数的计算可能引入取整错误。因此,两个浮点数值的相等测试并不可靠。

常见错误6:简化布尔变量赋值

     对布尔变量的赋值直接给出布尔运算结果即可,无需再判断。

常见错误7:避免不同情形中的重复代码

     如果if和else语句中有重复的内容,应当提取出来。

3.3Switch语句

switch(switch表达式){
case值1:语句1;
break;
case值2:语句2;
break;
case值N:语句N;
break;
default:默认情况下执行的语句;
}

switch语句遵从下述规则

1.switch表达式必须能计算出一个char、byte、short、int或者String型值,并且必须总是要用括号括住。
2.值1、值2、值N必须与switch表达式的值具有相同的数据类型,且是确切的值不能是变量。
3.当switch表达式的值与case语句的值相匹配时,执行从该case开始的语句,直到遇到一个break语句或到达该switch语句的结束。
4.默认是可选的,当设有一个给出的case与switch表达式匹配时,用来执行该操作。
5.关键字break是可选的。break语句会立即终止switchi语句。


if和switch的区别

  • if可以用于判断数值,也可以判断区间,只要运算结果是boolean类型,都可以进行判断。
  • switch用于对固定的几个值,进行判断。判断的值的类型有限

不要忘记在需要的时候使用break语句。一且匹配其中一个case,就从匹配的case处开始执行,直到遇到breaki语句或到达switch语句的结束。这种现象称为落空行为。

3.4For循环

for(初始值;循环条件;循环完后的变动){
               语句;
}

3.5while循环语句

while语法结构:

循环初始化
whi1e(循环继续条件){
循环体语句;
循环迭代;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fish_1112

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值