----------- 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之类的错误。
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.
三、数据类型转换
在可以自动类型转换的情况下,也可以“画蛇添足”地进行强制类型转换,如long lng = (long)100;即使不使用强制转换,也是可以的,但是添加了强制转换,可以使代码变得更清晰。
自动类型转换
在以下情况下,都有可能发生自动类型转换:1.赋值 : 将一个窄类型赋值给一个宽类型引用时。
2.参数传递: 将一个窄类型实参传递给一个宽类型形参时。
3.方法返回值: 将一个窄类型return给声明的宽返回值类型时。
4.数值运算: 不同类型运算取大的,有浮点取浮点,有int以下的类型一律提升为int。
对于最后一条需特别注意,如:
char + char = int
byte + byte = int
在表达式中如仅包含int常量的,那么结果值如符合范围,可以直接赋给byte。
而如果表达式中包含