黑马程序员——Java基础(一)

时间:2021-10-08 12:52:30

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

1,  dos命令行,课程中常见的命令:

dir:列出当前目录下的文件以及文件夹

md:创建目录

rd:删除目录

cd:进入指定目录

cd..:返回上一级目录

cd/:退回到根目录

del:删除文件

exit:退出dos命令行

 

2,Java语言的特点:跨平台性

什么是跨平台性?答:通过Java语言编写的应用程序在不同系统平台上都可以运行。

原理是什么?答:只要在运行Java应用程序的系统平台上,先安装与平台对于的Java虚拟机(Java Virtual Machine,JVM)即可,由JVM负责Java程序在该系统上运行。

原理图:

黑马程序员——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运行过程

黑马程序员——Java基础(一)

5,java注释:

单行注释://注释的内容

多行注释:/*注释的内容*/

文档注释:/**  作者:xxx    版本:xxx.xx  功能说明*/

 

6,  Java标识符:

java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是关键字。

 

7,  java的关键字

黑马程序员——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, 0000

总结:移位运算的注意事项

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,运算符的优先级

黑马程序员——Java基础(一)

 

基础学习心得总结:以上这些知识不难,但都是凡学习编程语言必须要掌握的知识,这篇日志记录的几乎是所有编程语言的共性,因为以前用过其它编程语言,所以这些内容掌握起来还是比较快的,但是值得注意的地方是数据类型的转换和运算符的优先级,都是一些细节方面的东西,即使是有过好多年开发经验的人也会弄错,特此我列出了一些要掌握的点,以期后续学习!