黑马程序员——Java基础(一)
1, dos命令行,课程中常见的命令:
dir:列出当前目录下的文件以及文件夹
md:创建目录
rd:删除目录
cd:进入指定目录
cd..:返回上一级目录
cd/:退回到根目录
del:删除文件
exit:退出dos命令行
2,Java语言的特点:跨平台性
什么是跨平台性?答:通过Java语言编写的应用程序在不同系统平台上都可以运行。
原理是什么?答:只要在运行Java应用程序的系统平台上,先安装与平台对于的Java虚拟机(Java Virtual Machine,JVM)即可,由JVM负责Java程序在该系统上运行。
原理图:
3, Java环境搭建:
什么是JDK(Java Development Kit)
开发工具,Javac及基础核心类
运行环境, java及基础核心类
下载、安装JDK(简单,不再赘述);
环境变量的配置:右击“我的电脑”——“属性”——“高级”——“环境变量”——“系统变量”——右击Path——变量值:添加D:\JDK1.6\bin;——确定
注意:最好添加用户变量,因为这样会安全一点,
“用户变量”——“新建”——变量名最好取个有意义的,如JAVA_HOME——变量
值是JDK安装的目录,例如我的是D:\JDK1.6——确定——“系统变量”——右击Path——变量值:添加%JAVAHOME%\bin;——确定
临时环境配置:dos命令是set path=临时环境目录
Classpath设置:dos命令是set classpath=类文件所在目录
4,JVM运行过程
5,java注释:
单行注释://注释的内容
多行注释:/*注释的内容*/
文档注释:/** 作者:xxx 版本:xxx.xx 功能说明*/
6, Java标识符:
java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是关键字。
7, java的关键字
注:java 无sizeof ,goto, const 关键字,但不能用goto const作为变量名
8, java中常量
整型常量:十进制(12) ,十六进制 (0x12),八进制(012)
长整型常量:13L
单精度浮点数:5.1f,.4f ,2e3f ,0f
双精度浮点数 :5.1,.4,2e-3,0d
布尔常量 :true和false
字符常量 :‘a’ , ‘8’, '\u0027'
‘\r‘表示接受键盘输入,相当于按下了回车键;
‘\n‘是换行;
‘\t‘是制表符,相当于table键;
‘\b‘是退格键,相当于Back Space;
‘\‘‘是单引号,而‘\“‘是双引号;
‘\\‘是一个斜杠“\”。
字符串常量 :“Hello World“,”123”, "Welcome \nXXX"
null常量 :null常量只有一个值,用null表示,表示对象的引用为空
9, Java中的变量
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据 。
10,变量字节大小及有效取值范围
1.byte占用一个字节,数字大小为-27—27-1
2.short占用两个字节,数字大小为-215—215-1
3.int占用四个字节,数字大小为-231—231-1
4.long占用八个字节,数字大小为-263—263-1
5.float占用四个字节,数字大小为1.4E-45~3.4E+38 , -1.4E-45~-3.4E+38 。用二进制的指
数形式表示一个浮点数的格式,如:101*22 , 101*2-3
6.double占用八个字节,数字大小为4.9E-324~1.7E+308, -4.9E-324~-1.7E+308 。
7.char占两个字节,数字大小为0—216-1,是unicode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。
8.Boolean占一个字节,其取值只有两个,true和false。
11,类型转换
自动类型转换(也叫隐式类型转换)
强制类型转换(也叫显式类型转换)
类型转换的原理及什么时候要用强制类型转换
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。
注意实例小程序
1 class TestByte 2 { 3 public static void main(String[] args) 4 { 5 byte b=3; 6 //b=b+2; //编译错误,java中整形数字默认为int类型,2为int不是byte 7 b=(byte)(b+2); 8 System.out.println(b); 9 } 10 }
11,运算符
1, 算术运算符:+,-,*,/,%,++,--
2, 赋值运算符:=,+=,-=,*=,/=,%=
3, 比较运算符:==,!=,<,>, <=, >=, instanceof
Instanceof检查是否是类的对象
4, 逻辑运算符:&,|,^,!,&&,||
5, 位运算符:<< 左移 >> 右移 >>> 无符号右移
注意1:b=a++; //首先a赋值于b,然后a=a+1
b=++a //首先执行a++,然后将结果赋值于b
注意2,:&&和&的区别
public class TestAnd { public static void main(String[] args) { int x=0; int y=3; if(x!=0 && y==y/x) System.out.println("y = "+y); } }
上面例子中,由于while语句的判断条件中的第一个布尔表达式是不成立的,程序就不会判断第二个布尔表达式的值,这就是“短路”。如果两个表达式之间用“&”来连接,如果正好碰到上面所示的特殊情况,程序运行时就会出错
注意3,>>和>>>的区别:
public class ShiftTest { public static void main(String [] args) { int x=0x80000000; int y=0x80000000; x=x>>1; y=y>>>1; System.out.println(“0x80000000>>1 = ” + Integer.toHexString(x)); System.out.println(“0x80000000>>>1 = ” + Integer.toHexString(y)); } }
运行结果如下:
0x80000000>>1 = c0000000
0x80000000>>>1 = 40000000
十六进制与二进的对比
0x8000000016 =1000,0000, 0000, 0000, 0000, 0000, 0000, 00002
0xc000000016=1100,0000, 0000, 0000, 0000, 0000, 0000, 00002
0x4000000016 =0100,0000, 0000, 0000, 0000, 0000, 0000, 00002
总结:移位运算的注意事项
1, 移位运算符适用类型有byte、short、char、int、long
2, 对低于int型的操作数将先自动转换为int型再移位。
3, 对于int型整数移位a>>b,系统先将b对32取模,得到的结果才是真正移位的位数。例如:a>>33和a>>1结果是一样的,a>>32的结果还是a原来的数字。
4, 对于long型整数移位时a>>b ,则是先将移位位数b对64取模。
5, 移位不会改变变量本身的值。如a>>1;在一行语句中单独存在,毫无意义 。
6, x>>1的结果和x/2的结果是一样的,x<<2和x*4的结果也是一样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方。请思考:如何用程序实现求2的x次方。答案:y = 1<< x;
12,运算符的优先级
基础学习心得总结:以上这些知识不难,但都是凡学习编程语言必须要掌握的知识,这篇日志记录的几乎是所有编程语言的共性,因为以前用过其它编程语言,所以这些内容掌握起来还是比较快的,但是值得注意的地方是数据类型的转换和运算符的优先级,都是一些细节方面的东西,即使是有过好多年开发经验的人也会弄错,特此我列出了一些要掌握的点,以期后续学习!