黑马程序员_毕向东_Java基础_DAY02学习笔记

----------- android培训java培训、期待与您交流! ------------

/*

黑马程序员_毕向东_Java基础视频教程——

0201-标识符.avi
0202-常量.avi
0203-进制的特点.avi
0204-进制转换(十进制和二进制).avi
0205-进制转换(八进制和十六进制).avi
0206-进制转换(负数二进制).avi
0207-变量.avi
0208-类型转换.avi
0209-算术运算符.avi
0210-转义字符.avi
0211-赋值和比较运算符.avi
0212-逻辑运算符.avi
0213-位运算符(左移右移).avi
0214-位运算符(与-或-异或).avi
0215-位运算符(练习).avi
0216-位运算符(练习2&三元运算符).avi
0217-语句(if).avi
0218-语句(if练习).avi
0219-语句(Switch).avi
0220-语句(Switch练习).avi

DAY02的学习中的主要包括java基础中的标识符、常量与变量、基本数据类型与类型转换、进制转换、各种运算符、选择分支语句等
 */


一、标识符


【java命名规则】必须遵守

Java语言规定标识符可以由字母、数字、下划线_、美元符号$组成,不能使用java关键字,首字母不能是数字,并且大小写敏感。
需要注意的是,其中的字母不仅仅指26个英文字母及其大小写,同时还包括韩文、日文、罗马字母等其他国家语言符号甚至汉字。但java命名规范中不建议使用英文字母之外的其他字母来作为标识符,以防止出现一些可避免的诡异的问题。

关键字:被java语言赋予了特殊含义的单词。
main不是关键字,但是会被虚拟机特别对待。

【java命名规范】java程序员的共识、约定

三种标记方法:


骆驼标记法:aGoodDog

Pascal标记法:AGoodDog
匈牙利标记法:strAGoodDog

命名规范:
包名:全小写。
类与接口名:首字母大写,骆驼表示法(小写、使用_或$也可以执行)
变量与函数名:首字母小写,骆驼表示法
常量名:全大写,单词连接使用下划线

二、数据类型、常量、变量


【变量与数据类型】:

java是一种强类型语言:必须为每个变量声明一种类型。其中包括:

基本数据类型:8种

在java中一切都是对象,但是基本数据类型是特例。它们并非如同对象一样,使用new操作符创建并存储在堆中,而是直接创造一个存储值的非引用变量,存放在堆栈中,因此比存储在堆中更加高效。

4种整型:byte short int long   1字节(-128~127) 、2字节(-32168~32167)、4字节(正负21亿多)、8字节(正负922亿亿多)

2种浮点型:float double  4字节(6~7位有效数字、3.40E38F、不推荐使用、精度不够) 8字节(15位有效数字、1.79E308)

字符型: char   2字节,在java中,char类型用UTF-16编码描述一个代码单元,不推荐使用(现阶段unicode编码已超过65536,因此对于某些辅助字符需要2个代码单元表示)

char c = '\n';        // ok
char c1 = '你';  // ok

转义字符:
\n 换行
\t 制表
\b 退格
\r 回车

char型可强制转换为除boolean外的所有基本数据类型。事实上,只有向byte和short需要强制类型转换,其他都可以进行自动类型转换。
4种整型和char不可进行逻辑运算,其他运算皆可。
2种浮点型也不可进行逻辑运算,同时也不可进行位逻辑运算和移位运算。

布尔型:boolean  大小没有指明,只规定了可以取字面值true或false。
boolean型不允许进行强制类型转换,也不允许其他基本类型转为boolean型。
布尔型只接受相等性判断、逻辑运算、位逻辑(~除外)、赋值操作。
                 
在java中,boolean型中的true或false与整型的1或0没有对应关系,不能进行类型转换,这与C++中不同。也因此,在java中不会出现if(i=0)恒为false之类的错误。



java在赋值操作时,会检验是否会发生丢失精度的现象,并在编译时进行提醒。但是在运算过程中即使丢失精度,无论在编译时还是运行时都不会受到任何提示,如:

int i,j,k;

k = (i=10000000) * (j = 10000000);    //k = 276447232 ,丢失了精度。

JAVA中还有一种空类型: void


引用数据类型有三种:

接口
数组


【变量的初始化】:

方法中定义的局部变量必须初始化。而类中的类变量会被赋予默认值。


/* 这个程序说明了main方法不能直接调用本类的类变量,类变量的调用需要有对象存在。
 * 类变量可以不用初始化,但是局部变量必须初始化。
 * 类变量在对象创建时先初始化为默认值,整型->0, 浮点型->0.0 char型
 */

class Demo{
public static void main(String[] args){
System.out.println(new Demo().i);
}
int i;
}/* output:
0
*///:~


【常量】:

对于数值常量,日常生活中的表示形式并不足以向计算机说明究竟指代的是4种整型中的哪一种,可通过添加后缀字符来指明其具体数据类型,通过添加前缀的方式指明是几进制数。

对于十进制数:

1000   ----->  无后缀,默认为int型,但在赋值时如果符合取值范围,也可以赋值给较低数据类型,如1000可赋值给short,但不可以直接赋值给byte。
1000L  ----->  带L或l后缀,说明是long型,可大写也可小写,但一般用大写,防止小写l与数字1混淆。在明确指明类型之后,即使符合取值范围,也不可以直接赋值给较低数据类型,会出现编译错误:可能损失精度。
1.0    ----->  无后缀,默认为double型,也可以明确标记为1.0D,但不标记也可。无论是否标记都不可直接赋值给float变量
1.0f   ----->  标记为float型,同样可大写可小写。


对于十六进制数:

以0x或0X前缀来标识。十六进制数与十进制类似,如不标明即为int型,符合取值范围可赋值给更小的数据类型,超出范围时报错。标注为long型之后,即使符合范围也不可赋值给更小的数据类型。


对于八进制数:

在数字前面加0指明是八进制。但是由于容易混淆所以不推荐使用。


对于二进制数:

在C、C++、java中,对于二进制数都没有直接常量表示方法。但可以通过Integer或Long类的静态方法toBinaryString()来显示数据的二进制形式。对于较小的数据类型也可以使用Integer类的静态方法来显示二进制形式,该方法可以自动将较小类型转换为int。

Integer.toBinaryString(60);   将十进制的60转换为2进制的字符串形式。


JAVA的指数计数法:

1.3E-43代表1.3乘以10的-43次方,这是一个double型常量,如果要指定为float型,要加f后缀:1.3E-43f。

空常量:null

【数制转换】:

十进制转二进制: 整数部分除2取余下到上,小数部分乘2取整上到下。
二进制转十进制:按权值相加。
二进制转八、十六进制: 3、4个一组,进行转换。

负数的二进制,取反加1(补码),负数的二进制的第一位都是1.


三、数据类型转换


数据类型转换分为2种,一种是自动类型转换,在进行向上转型时发生,通常不会损失精度。另一种是强制类型转换,在进行窄化转型时发生,需要强制今夕,并且可能会损失精度。
在可以自动类型转换的情况下,也可以“画蛇添足”地进行强制类型转换,如long lng = (long)100;即使不使用强制转换,也是可以的,但是添加了强制转换,可以使代码变得更清晰。

自动类型转换

在以下情况下,都有可能发生自动类型转换:

1.赋值 : 将一个窄类型赋值给一个宽类型引用时。

2.参数传递: 将一个窄类型实参传递给一个宽类型形参时。

3.方法返回值: 将一个窄类型return给声明的宽返回值类型时。

4.数值运算: 不同类型运算取大的,有浮点取浮点,有int以下的类型一律提升为int。

对于最后一条需特别注意,如:
char + char = int
byte + byte = int


在表达式中如仅包含int常量的,那么结果值如符合范围,可以直接赋给byte。
而如果表达式中包含
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值