黑马程序员技术交流社区
标题:
苟且装逼,诗操远方
[打印本页]
作者:
槐树向北
时间:
2016-5-29 21:20
标题:
苟且装逼,诗操远方
#5月29第三天
##上课的第二天.Day02.Java基础之核心基础
###常量
1.
常量是其值不能改变的量
1.
整数常量,所有整数
2.
字符串常量,用双引号扩起来的内容.
3.
小数常量,所有小数.
4.
字符常量,单引号扩起来的内容,里面只能放单个字符,单个数字.
5.
布尔常量,只有ture 和 false 比较特殊.
6.
空常量,null ,数组部分会讲到.
###进制
1.
进制,就是进位制.人为规定的进位方法.
2.
十进制由来,数手指头的起源.所以十进制就在人类大脑里产生了.
3.
二进制由来,中国的易经里说道阴爻和阳爻(yaó),莱布尼兹发现这是宇宙最强进位制.
###进制表现
1.
二进制,0b或0B开头,1.7版本之后的java能表现二进制了.
1.
二进制用 0,1两个数值标识
2.
八进制,0开头.
1.
用0,1,2,3,4,5,6,7共八个数值标示.
3.
十进制表现形式,整数默认十进制.
1.
用0,1,2,3,4,5,6,7,8,9共十个数值表示.
4.
十六进制,0x或0X开头.
1.
用0,1,2,3,4,5,6,7,8,9,A.B.C.D.E.F共十六的数值表示.
###任意进制转到十进制
1.
数制规则.
1.
系数,每个数位上的数值.
2.
基数,进制数,如:十进制基数是10 ,八进制基数是8.
3.
权,从右往左从零开始加权每次加1.
4.
结果:各个系数*基数的权次幂的累加和.
###十进制转换到任意进制
> 基本原则:
**除基倒取余**
1.
十进制转二进制:除2取余倒排.
2.
十进制转八进制:除8取余倒排.
3.
十进制转十六进制:除16取余倒排.
1.
63转二进制 63/2-31-1 31/2-15-1 15/2-7-1 7/2-3-1 3/2-1-1 1/2-0-1 111111
2.
63转八进制 63/8-7-7 7/8-0-7 77
3.
63转十六进制 63/16-3-f 3/16-0-3 3F
###进制快速转换法
>
**先将十进制初二取余倒排转换为二进制**
1.
二进制转到十进制,把各位有1的对应十进制数相加.
2.
二进制转到八进制,三位二进制一组,转换成一位八进制.
3.
二进制转到十六进制,四位二进制一组,转成一位十六进制.
###原码,反码,补码
1.
原码:原始二进制码.
2.
反码:正数反码何其原码相同,负数反码对其原码逐位取反,符号位除外
3.
符号位,0表示正,1表示负.在数码的左起第一位.
4.
补码:正数补码与其原码相同,负数补码是其反码的末位加1.
*注意:我有个问题就是为什么要使用补码,是为了负数的运算都能变成加法运算码?*
###变量
1.
变量声明格式: 数据类型 变量名=变量值.
2.
变量的定义,在程序执行的过程中,在某个范围内,其值可以发生改变的量称之为变量.
3.
为什么要有变量?用来不断的存放同一类型的数据.重复使用.
###数据类型
1.
为什么有数据类型,
1.
java是强类型语言,为每一种数据都指定数据类型.
2.
根据不同的数据类型在内存分配不同大小的内存空间.
2.
基本数据类型
1.
整数型
1.
byte 1byte -128~127
2.
short 2byte-2^15~2^15-1
3.
int 4byte -2^31~2^31-1(整数默认是int型)
4.
long 8byte(在数值后加L或l标识)
2.
浮点型
1.
float 4byte(数值后加F或f标识)
2.
double 8byte(浮点数默认double型,D或d标识)
3.
boolean型
1.
ture 1byte
2.
false 1byte
4.
字符型
1.
char 2byte
3.
应用数据类型
###变量注意问题
1.
作用域问题,同一的作用域中不能使用相同变量名命名两个或以上变量.
2.
初始化问题,局部变量在使用之前必须初始化.
3.
一条语句可以同时定义几个变量.
###数据类型转换之隐式转换(自动类型提升)
**第一弹请看以下代码**
int x=3;
byte b=4;
x=x+b;
System.out.println(x);
**现在输出为7**
1.
当底位类型的数据类型提升到高位数据类型,从小到大的过程,在前面补零.
**第二弹请看以下代码**
int x=3;
byte b=4;
b=x+b;
System.out.println(b);
**编译时报错提示可能损失精度**
1.
我们把x+b算出的int型数据复制给byte型的b.这样真的会损失精度呀.哈哈,程序果然不骗人.
###数据类型转换之强制转换
1.
在第二弹中,我们发现了损失精度的报错.这时候我们可以进行强制类型转换,我们强制转换成特定类型.
2.
强制转换如果是大变小会有损失精度带来的危险.
###详解byte类型运算过程中的细节.
-
***变量相加**
*
**请看以下代码,是否有问题,如有问题请指出**
byte b1=3;
byte b2=4;
byte b3=b1+b2;
System.out.print(b3);
**从两方面,1,byte与byte (short,char)进行运算,的时候为了保存精度,都会提升到int型运算.2,b1和b2的两个变量,变量存储的值是变化的,在编译的时候无法判断具体的值.**
-
***常量相加**
*
**java编译器有常量优化制,所以byte b4=3+4;就不会报错.因为优化了3加4的结果可以使用byte型表示.**
###long和float也会打架吗
float f=12.3f;
long x=12345;
x=(long)f; //强制类型转换
System.out.println(x);
/*float占4个字节
IEEE 754
首位代表符号位
8位代表指数位
00000000 - 11111111
0 - 255
0代表0
255代表无穷大
1-254
-126 - 127
23位代表尾数位
最后总结float比long大.
*/
###字符和字符串参与运算
任何数据类型的值用+号和字符串连接时都会变成新的字符串.
###运算符
1.
算术运算符
- +,-,*,/,%,++,--
- +号有三种作用,正号,做加法运算,字符串连接符.
- 整数相除只能的到整数,如果想的到小数,必须把数据转换为浮点类型.
- /获取的是除法操作的商 %获取的是除法操作的余数
- %运算符很有意思.
2.
赋值运算符
3.
比较运算符
4.
逻辑运算符
5.
位运算符
6.
三目运算符
####++,--运算符的细节.
++在变量前后的时候结果都是变量自增1,但是++a和a++两个表达式的值分别是a自增后的值和a自增前的值.
###比较运算符(关系运算符)
==,!=,<=,>=
作者:
王杰_VzMIL
时间:
2016-5-29 22:46
无形装逼最为致命
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2