首页 > 代码库 > 黑马程序员_Java基础知识

黑马程序员_Java基础知识

                                    

java基础知识

1、Dos命令:

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

  md:创建目录 

  rd:删除目录 

  cd:进入指定mul

  cd\:返回到根目录

  cd..:退到上级目录

  del:删除文件

  exit:退出dos命令行

  *:通配符

  help:帮助命令

2、path系统变量:系统中应用程序所在的路径 

  临时配置的环境变量的方式:用set命令完成  

  set:用于查看本机中所有环境变量的信息

  set 变量名:查看具体的一个环境变量的值

  set 变量名=:清空变量的值

  set 变量名=具体值:赋值

  在原有的环境变量的基础上添加新值

    set path=新值;%path%;

 

4、classpath:规定JVM到什么地方执行

  set classpath=" 路径 ";先到指定的路径找,在到当前路径找,所以不用“;”较好。

  set classpath=.,"路径"    先到当前路径找,再到指定的路径找

5、path和classpath的区别

  path是为了当前路径下运行当前路径的下Java文件,执行者是windows

  classpath实现的是当前路径下运行非当前路径下的class文件,执行者是JVM

6、main()

  A、程序的入口

  B、被JVM所调用

  C、保证了一个类的独立运行(其他类中也有main()也可以运行)  

 

注释

1、Java中特有的注释:

  /** 文档注释*/

2、 作用:

  A、解释说明

  B、文件调试

3、注释是不经过字节码文件的,所以加注释的Java文件经编译后大小不变。

 

关键字

特点:

  关键字所有的字母都小写

 

 

标识符

1、自己命名的地方都是标识符

  组成:26个英文字母大小写、数字:0-9,_和&;

  规则:数字不能开头

     区分大小写

     不能使用关键字

2、类/接口

  大驼峰式:当有多个单词时,每个单词首字母大写

 方法名/变量名

  小驼峰式:当有多个单词时,第一个单词首字母小写,第二个单词首字母大写

 

常量

1、常量的分类:

  A:字面值常量

    a:整数常量

    b:实数(这里专指小数)常量
        12.5,-65.43
    c:字符常量
      ‘a‘,‘A‘,‘0‘
    d:字符串常量
      "hello"
    e:布尔常量
      true,false
    d:空常量:不是类型,是一个数值
      null
  B:自定义常量
(3)常量可以直接被输出。

 

进制

十进制转换成其他进制:

    依次除以进制,直到商为0,到取余

其他进制转成十进制

    每位上的数字*进制^权值,再相加

    

数据类型

1、Java提供的基本数据类型:

    四类八种:

    整数:byte,short,int ,long

    浮点型:float,double

    字符型:char

    布尔型:boolean

 引用数据类型:

    类,接口,数组

2、各基本数据类型所占字节和表示范围

    类型占用的空间表示范围
byte   1字节-128~127
short2字节-32768~32767
int4字节-2^31~2^31-1
long8字节-2^63~2^63-1
float4字节-3.403E38~3.403E38
double8字节-1.798E308~1.798E308
char2字节0~65535

 

 

注:布尔数据类型带包一个比特信息,但是它的大小是不确定的,如果非要说它的大小,就说是一字节。

  

  整数是精确数,浮点型是近似数;

 

类型的转换 

1、当byte、short、char类型进行计算时,会自动提升为int型;整数默认是int,浮点型默认是double;

    显示赋值,编译时可以直接判断是否在变量的数据范围内。如果在则编译成功。

    byte b=100;//成功

    byte  b=200;//失败

    显示赋值是浮点型,则会默认的必须为double接受。否则报错。如果要给float型赋值,则需要加f。

    float f=100.0//失败;

    double f=100.0//成功

    float f=100.0f//成功

2、boolaen类型不能转换为其他的数据类型;

3、对于long型变量,显示赋值时,会先判断是否在int型范围内,再赋值给long。原因是整数默认int型。所以如果数据过大的话,一般会在long型变量后加l或者L。

    long s=100;//成功

    long s=88888888888;//失败

 

 

运算符

1、算术运算符:

  +:

  A、数学意义上的加法

  B、指定一个数字为正数

  C、可以连接字符串

     两个字符串可以直接相加

     一个字符串直接加上数字,是将数字类型变成字符串在连接。

     一个数字可以直接加上字符串,是将数字类型变成字符串再连接。

     字符串不是直接和数字连接,则看运算规则

  %取模运算

    符合与被除数相同(第一个数)

    含有浮点型数据进行计算时,hi出现一个近似数

  /整除运算:

    两个整数相除得到其整数部分

    含有小数相除,则为数学意义上 的除法

    /和%含有浮点型运算时最好不改变数据类型

2、byte b=100;

  b+=10;//成功。像+=,-=,*=.%=这样的运算符有一步隐藏的强制转换:b=(byte)(b+10);

  b=b+10;//失败

3、逻辑运算符:

  短路与(&&),短路或(||):在能判断出结果的情况下,就不再判断了。

4、位运算符:

  对于以下四种运算符:,直接将0认为false,1认为true,计算规律与逻辑运算符的规律相同;

   & 有0则0;

   | 有1则1;

   ^ 相同取0,不同取1;

   ~ 所有1变0,0变1;

   左移<<: 将所有的数向做移动指定的位数,相当于乘以对应的进制数

   右移>>: 包含符号的移动,则前面是几,移出后空出的位就补几;相当于除以对应的进制数

   无符号右移>>> : 不包含符号的移动,即无论前面是几,都补0;

5、如何将2个数的值互换,使用位移运算符

  在位移运算中,当一个数异或另外一个数2次后,结果仍为这个数。

  int x=10,y=20;

  x=x^y;//x=x^y=10^20     y=y=20;

  y=x^y;//x=10^20        y=10^20^20=10;

  x=x^y;//x=10^20^10=20    y=10

 

程序的流程控制

1、选择结构:

  if语句的多重嵌套:

    要充分考虑边界值得问题;

    每种情况不要有重复的部分;

  switch语句:

    switch语句后面括号的变量数据类型有6种:byte、short、char、int、String、枚举

    switch语句中遇到break时,则跳出循环,否则,继续执行,直到switch语句结束,或者遇到break;

    break放在最后是不建议省略,放在前面时,必须要有break;

    case后面括号内必须使用一个值,不能使用区间,也不能使用逗号分隔;

2、循环结构:

   不同循环的使用场景:

    明确循环次数时,一般不使用for循环

    当不确定循环次数时使用while循环;

    一般不使用do-while循环,因为存在数据安全问题。

3、break和continue的区别:

   break是跳出本层循环

   continue是跳出当前的这次循环,进入下次循环

4、循环标号:

  可以在循环出去一个标号。

  格式为:

    标识符:循环

  使用标号,可以将内层循环的break直接跳出到外层循环。(continue同理,但较少使用)

 

 

函数

  独立的一小段功能代码块。

  函数与函数之间的关系是平等的,他们通常直接定义在类中,除非出现内部类,否则不定义在另一个函数内部。

  函数的好处:定义函数可以将功能代码封装,提高代码的复用性

  在void返回值类型的函数中,return可以省略,也可以写成”return;“形式。

 

 

函数的重载:

1、概念:

  参数的个数和参数的类型不同,函数名必须相同,与返回值类型无关。

2、注意事项:

  A、在调用重载函数时,会根据参数的类型进行函数的调用

    如果没有精确的匹配类型会找金斯顿类型匹配。如果没有,则报错。

    在寻找近似类型匹配的时候,会遵循隐式的类型转换原则:byte,short,char>long>double  

  B、函数的重载也在于参数的顺序是否相同。

  C、在函数重载时,只有参数名不同,那不是函数的重载,他们是相同的函数。

  D、判断函数是否重载,只看函数名是否相同,参数列表是否不同,与返回值类型无关。

 

 

内存结构

堆内存:

  数组和对象,通过new建立的实例存放在内存中;

  每个实体都有内存地址值

  实体中的变量有默认的初始化值

  实体不再使用时,会在不确定的时间被垃圾回收器回收。

栈内存:

  在方法内定义的变量都是局部变量

  局部变量均在栈内存中,使用完毕后所占的内存空间会自动的释放

 

 

数组

1、数组定义的格式:

    数据类型[]  数组名={具体内容}; int[] arr={1,3,5,6};

    元素类型[] 数组名=new 元素类型{元素个数或者数组};   int[] arr=new[13];

    元素类型[]  数组名=new 元素类型[] {元素1,元素2,元素3}; int[] arr=new int[]{1,24,5};

2、数组的长度: arr.length;

3、多个引用指向同一个对象,即多个变量指向同一个实例对象的堆内存地址。当通过其中一个引用修改了该实例对象,则其他变量访问这个对象时相应的值也被修改了。

4、常见的数组定义方式:

  A、int   [] arr=new int[5];//正确,不建议

  B、int arr[]=new int[5];//正确,强烈不建议

  C、int[] arr=new int[3]{1,2,4}//错误。因为指定了数组的长度,再显示赋值,可能会有不同的数组长度出现。

  D、int[] arr=new int[];// 错误。因为没有指定数组的长度不知道开辟多大的内存空间。

  E、int[] arr;//错误,因为没有初始化。

    int[] arr2=null;

    System.out.println(arr2);//正确,arr2有值,只不过为空

  F、int[] arr=new int[5];

    System.out.println(arr[3]);//正确

  G、int[] arr=new int[5];

     arr=null;

    System.out.println(arr);//正确

     System.out.println(null);//错误

  H、int[] arr=new int[5];

    System.out,println(arr);//正确,结果为一个地址值

  I、String[] str=new String[]{"1","2","3"};

    System.out.println(arr[3]);//错误,数组角标越界异常。

  J、int[] arr=new int[5];

   arr=null;

   System.out.println(arr[3]);//错误,空指针异常

 

 

 

二维数组

 

1、格式:

  A、int[][] aarr=new int[3][2];

    //3代表二维数组中有多少个一维数组,2代表一维数组的长度。

  B、int[][] arr=new int[3][];

    System.out.println(arr[1]);//null。

  C、int[][] arr=new int{{1,3},{2,4},{5,3}};

2、注意事项:

  A、为二维数组里面的一维数组赋值时,不能使用这种格式:arr[1]=new int[] {1,2};

  B、使用第一种格式要求所有一维数组的长度都相同

  C、使用.length同样可以查到二维数组中一维数组的长度

      int[][] arr=new int{{1,3},{4,6},{9,7}};

      arr.length=3;

      arr[0].length=2;

  D、int[] x,y[];//定义了一个一维数组x和一个二维数组y。

    System.out.println(x);//报错,未初始化

    System.out.println(y);//报错,未初始化

    x=new int[3];

    y=new int[3][];

  E、int[][]arr=new int[][2];//没有指定二维数组的长度,编译不能通过。

 

黑马程序员_Java基础知识