黑马程序员——Java基础(一)关键字,常量,变量,进制,数据类型
来源:互联网 发布:sai画图软件下载 编辑:程序博客网 时间:2024/06/05 12:46
Java语言基础组成
关键字:被java语言赋予特殊含义的单词。
标识符:在程序中自定义的一些名称。由0-9,26个英文大小写,_ $。但是数字不能开头,不可以使用关键字。
Java中严格区分大小写。
Java中的命名规范:包名:xxxyyyzzz,类名:XxxYyyZzz,变量和方法名:xxxYyyZzz,常量名:XXX_YYY_ZZZ
常量:其值在运行过程中,值不变的量。
表示方式:
字面值常量:
整数常量:123,-45。
实数常量:123.5,0.13。
字符常量:'A','a','1'。
字符串常量:"23","ad"。
布尔常量:true,false。
空常量:null。
自定义常量:
进制:
为了让表现形式短,有了从二进制到八进制和十六进制的转换。
一个二进制数称为1位,bit。
1个字节为8bit。
1k=1024字节。
1M=1024K。
1G=1024M。
1T=1024G。
1P=1024T。
JDK7.0以后,
0b开头表示二进制。
0开头表示八进制。
十进制的没有表示。
0x开头表示十六进制。
进制的转换:
其他进制转换成十进制一般规律:
系数:就是每一位上的数据。
基数:x进制,基数就是x。
权:我们把数据从最后边一位开始给编号,并且从0开始,这个编号就是指定位置的数据的权。
结果:把系数*基数^权次幂相加即可。
Eg:
1011
计算:1011=1*2^3+0*2^2+1*2^1+1*2^0=11.
作业:
0b100101 = 1*2^5+0*2^4+0*2^3+1*2^2+0*2^1+1*2^0=37.
074 = 7*8^1+4*8^0=60.
0xf4 = 15^16^1+4*16^0=244.
十进制到其他进制的转换规则:
除基取余,直到商为0,余数反转。
作业:
60 = 074
60 = 0x3C
244 = 0364
244 = 0xF4
快速转换方法:8421法!1,2,4,8,16,32,64,128,,,。
(原理:如果指定位不是0,则每位都有固定的值)
二进制到八进制:从右到左,每三位一组计算。
二进制到十六进制:从右道左,每四位一组计算。
计算机中所有的数据都是以补码的形式存在的。
如何求补码?
正数的反码、补码和原码相同。负数的补码取反加1,符号位不变。
计算机中符号位也会参与运算,如果数据超出范围,那么舍弃超出的。
作业:
已知原码10110100,求反码和补码:
反码:11001011
补码:11001100
已知补码11101110,求源码:
补码:1 1101110
反码:1 1101101
原码:1 0010010
变量:变量是内存中的一个存储区域。
格式:数据类型变量名 =初始值。
为什么使用变量?
用来不断的存储同一类型的常量,并可以重复使用它。
使用范围:在它定义的{}内有效!在{}不能重复定义同名变量。
如果定义了一个变量,没有初始化直接使用(直接初始化或间接初始化),会报错。
定义长整形,必须加l或者L。定义单精度浮点数,必须加f或者F。
Java中的字符采用的编码是Unicode编码,中文占两个字节。C语言中中文占1个字节。
变量定义的方式有两种:
数据类型变量名 =初始化;
数据类型变量名;
变量名 =新值;
数据类型:
基本数据类型:
数值型:
整数类型:byte [1],short[2],int[4],long[8]。
浮点类型:float[4],double[8]。
字符型:char[2]。
布尔型:boolean[没有明确空间]。
引用数据类型:
类:class。
接口:interface。
数组:[]。
整数的默认是int类型,小数默认是double类型。
Java浮点数两种表示形式:
十进制数形式:123.2 100.23
科学计数形式:123.2E1 1.002310^2
强类型:使用数据时必须指定其类型。
弱类型:可以不指定其类型,根据其值而定。如php。
字符串属于什么类型?引用类型!!
数据类型的转换
A:boolean类型不可以转换为其他的数据类型。
在参与运算过程中:
B:隐式转换(从小到大)。
byte,short,char在参与运算的时候先转换成int。
byte--short--char--int-------long--------float--------fouble.
为什么float能表示的范围比long大?
因为float符号位1位,小数位23位(存的数不大于1),还剩8位的取值范围-128~127,幂2^127。
long类型是2^63幂,-1。
注意:long是8个字节,float是4个字节。
long是整数,float是浮点数,整数和浮点数的存储规则不一样。
long的范围是小于float的。
C:强制转换(从大到小)。
如果你明确知道数据是可以表示的,就可以使用强制转换。
(强转类型)变量。
从大数据类型强制转换成小数据类型的时候,这个数据不要超过小数据类型的表示范围,如果超过会有不同的结果输出。
一般不推荐使用强转。
byte可以默认转换成char吗?short可以默认转换成char吗?
short和char不能相互转换。
byte和char不能相互转换。
byte可以转成short,short不能转成byte。
char是两个字节的无符号数据,0~65535,而byte的范围是-128~127,所以char的表示范围没有包含byte,所以不能隐式转换。
char和short不相互包含,byte包含不了short,所以转换不了。
Eg:
byte b2 = (byte)130;
数据:130默认是int类型的十进制数据。
第一步:十进制的130转换成二进制数据为10000010
第二步:130在内存中的表示形式(补码形式):
00000000 00000000 0000000 10000010
这时强转成byte的话,截取:10000010
第三步:二进制数据10000010,是个负数
补码:1 0000010
反码:1 0000001
原码:1 1111110
最终结果:11111110 = -126
通过这样可以知道一个整数的二进制是多少:
Inteter.toBinaryString(6);
一道面试题:
下面的语句有没有问题?如果有,请解释!
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
有问题,在byte b3 = b1 + b2;报错
解释:
b1+b2在参与运算的时候,首先会自动转换转换成int型,在这个时候,b1和b2其实都被提升了类型。所以,所以他们的计算结果也应该是int类型。最终就相当于直接把int类型赋值给byte类型。所以,会损失精度。
如果参与运算的是常量,编译器会先计算值,在看该值是否是左边能够表示的范围。如果是,就不报错。
- 黑马程序员——Java基础(一)关键字,常量,变量,进制,数据类型
- 黑马程序员 Java基础<一> 关键字、常量变量、数据类型
- 黑马程序员----Java基础(一):关键字、标识符、常量、变量
- 黑马程序员——java编程基础(一)注释、关键字、变量、常量、运算符
- 黑马程序员——java基础语法(一)---关键字、标识符、注释、常量、变量、运算符
- 黑马程序员——JAVA基础----语法(一)-- 关键字、常量、变量、运算符
- 黑马程序员——Java语言基础(一)---关键字、标识符、注释、常量、变量、运算符
- 黑马程序员—Java语言基础(关键字、标识符、注释、常量与变量、进制、数据类型、类型转换、代码示例)
- 黑马程序员——JAVA基础(一)---关键字、数据类型、变量
- 黑马程序员--C#基础(二)-->关键字、数据类型、变量、常量
- 黑马程序员——Java基础语法(一)---关键字、常量、变量、运算符
- 黑马程序员——Java基础语法(一)---关键字、常量、变量、运算符
- 黑马程序员——Java基础语法(一)---关键字、常量、变量、运算符
- 黑马程序员——Java基础语法(一)---关键字、常量、变量、运算符
- 黑马程序员——Java基础语法(一)---关键字、常量、变量、运算符
- 黑马程序员——Java基础语法(一.关键字、标识符、注释、常量和变量、运算符)
- 黑马程序员——C语言基础-关键字、标识符、注释、数据类型、常量、变量
- 黑马程序员————Java基础(关键字、常量、变量、运算符)
- CodeForces 302E(好题)
- 无稳态多谐振荡器原理
- 【强大枚举函数】Enum系列
- Linux内存管理
- POJ1247解题报告——我写的第一篇解题报告
- 黑马程序员——Java基础(一)关键字,常量,变量,进制,数据类型
- python sorted函数
- 深入分析Java ClassLoader原理
- 【C++】c++复数类Complex
- 查询员工的员工号,员工名以及员工的经理号,如果没有经理,则显示No Manager
- TDW千台Spark千亿节点对相似度计算
- postgresql 触发器
- MySQL高可用方案-MHA
- USB 设备的PID-Product ID,VID-Vendor ID