黑马程序员---基础知识总结

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

 

Java开发前环境配置:

1."www.oracle.com"下载jdk。java for developer目录下下载。

2.安装jdk。

3.安装好后配置环境变量。计算机属性->高级系统设置->环境变量->系统变量->首先新建名称为JAVA_HOME,值为javac的目录的\bin前的目录:D:\Program Files\Java\jdk1.7.0_45->然后编辑Path的值:光标移动到最前端写:%JAVA_HOME%\bin;(一劳永逸配置法)。

4.也可临时配置环境变量:cmd命令行输入set,可查看已配置好的环境变量。只查看path的值,在命令行输入set path。想配置path的值,可在命令行输入set path=D:\Program Files\Java\jdk1.7.0_45\bin;%path%打回车,并且此配置只在本窗口有效,打开新窗口查看path的值还是以前的path值。如果你是通过在本窗口命令行输入start命令打开新窗口的,该窗口会延习原窗口的环境变量值。

5.用txt文本编辑器写java代码时需要将.txt改成.java。新建个TXT文档,在里面输入你所需要的内容之后,再  文件  另存为 选择所有文件  输入你要保存的文件名 扩展名当然不要忘掉 是JAVA的。
你也可以直接打开我的电脑——工具——文件夹选项——查看——在高级设置中把 隐藏已知文件的扩展名  这一行前面的勾去掉,再在TXT文档后面直接改成JAVA的即可。

6.在命令行运行你刚才写的程序。打开命令行---cd进入到你刚才放.java源文件的文件夹---javac 123.java回车生成Demo.class执行文件---java Demo回车运行Demo。可以将原文件名保存成与类名一致,这样比较方便。
如果在class关键字前加上public关键字,就必须使类名与文件名一致。所以一个.java文件中只能存在一个public类。

7.配置java命令classpath。命令行输入set classpath=E:\java1201\day01(.class文件存放地址)。“.exe”(配置path)先当前目录找再在path里面找,“.class”(配置classpath)如果值后面加分号先从classpath里面找再在当前目录找,如果不加分号只在classpath里面找,正常最后不加分号,只在分隔的时候用分号。

8.大小写严重区分,class只能是小写的才是关键字。

9.类名通常由单个单词所组成,首字母大写。如果由多个单词所组成,每个单词的首字母大写。

10.
class Demo
{
 public static void main(String[] args)
 {
  System.out.println("hello java");
 }
}
主函数的作用,能保证这个类的独立运行。java这个命令会去调用虚拟机,虚拟机回去调用windows底层内容,并去运行你所指定的类,这个类Demo会先在这个类里面找有没有这个主函数。这个主函数就是程序的入口。

11.主函数的特点:在一个.java文件中是可以写多个类的。在命令行输入javac编译这个.java文件,会生成多个.class文件。只有有主函数的类才可以运行。一个类里不可有两个主函数。

------------------------------------------------------------------------------------------------------------------

注释与基本数据类型:

1.多行注释不允许再嵌套多行注释。/*..........*/,文本注释也一样。/**.........*/。

2.一般来讲,类上面加的都是文档注释/**......*/。函数的上面通常加的都是多行文本注释/**......*/。如果修饰符有改变的话,有可能会加多行注释。代码当中有几句话比较难懂,一般加单行注释,但是不要每句话都加。中英文结合非常密,会导致阅读性很差。

3.写代码之前首先写注释。
/*
需求:

思路:
1.
2.

步骤:
1.
2.
*/


4.由8位二进制数组成一个字节。字节是计算机的基本存储单位。

5.负数二进制:一个整数占4个字节,这个整数的二进制(4字节,前面补零凑够4字节)按位取反再加一。

6.负数的最高位都是一。

7.整数类型:byte(1字节:-2^7<x<2^7-1),short(2字节),int(4字节),long(8字节);

8.浮点型:float(单精度:4个8位),double(默认双精度:8个8位)

9.字符型:char(取值:0-65535)(char类型是两个字节)(一个中文占两个字节)

10.布尔型:boolean。boolean bo = true;boolean bo1 = false;

11.定义float t=2.3;会报错:错误,可能损失精度。

12.可以定义char ch=‘ ’;因为空格也是字符。

13.同一区间内不可以定义两个相同名字的变量名。大括号就是区间。

14.类型强制转换。byte b = 3;b = (byte)(b + 2);

15.System.out.println('a' + 1);   输出98。

16.字符串数据和任何数据使用+都是相连接,最终都会变成字符串。

17.float>long ?????????????????

     float 1个符号位,8个指数位,23个小数点后的位(尾数位)。

---------------------------------------------------------------------------------------------------------------------

1.类前面加了public以后,类名必须与.java文件名保持一致。

    所以一个.java文件中只能存在一个public类。

2.构造函数的第一行都隐含着super();语句。

3.外部类和内部类前分别可以被哪些修饰符所修饰。
public/ abstract/ class Outer  //外部类
{
    private/ static/ class Inner  //内部类
    {

    }
}

4.多态:
(1)多态的体现:
         父类的引用指向了自己子类的对象。
         父类的引用也可以接受自己子类的对象。
(2)多态的前提:
         必须是类与类之间有关系,要么继承,要么实现。
         必须存在覆盖。
(3)多态的好处:
         提高了程序的扩展性。
(4)多态的弊端:
         提高了扩展性,但是只能使用父类的引用访问父类中的成员。
(5)多态的应用:
         Animal a = new Cat();a.eat();--猫吃鱼;
         Cat c = (Cat)a;c.catchMouse();

5.只能将子类的对象附给父类引用,这是类型提升,向上转型。 父类的引用强制转换为子类类型,向下转型。

6.千万不要将父类对象转成子类类型。我们能转换的是父类引用指向了自己的子类对象时,该引用可以被强制转换为子类类型。多态自始至终都是子类对象在做着变化。

7.英语(class cast exception 类转换异常)、 if(a instanceof Cat) 如果a是Cat的实例。

  • 构造代码块优先于构造函数执行
  • 构造代码块给所有对象进行初始化
  • 构造函数是给对应的对象进行针对性的初始化

8.Person p = new Person();   p.setName("lisi");

    加载顺序如下:

    1.因为new用到了Person.class。所以先找到Person.class文件并从硬盘中通过java虚拟机jvm加载到内存中。Person类中的static成员变量,和所有的成员方法,包括static方法,都放在方法区。

     2.执行该类的static代码块,给Person.class类进行初始化。类一加载只执行一次。再创建对象的时候就不加载了。主函数那个类里的静态代码块优先于主函数执行。被static关键字修饰的代码块,与先后顺序有关。

     3.在堆内存中开辟空间,分配内存地址。

     4.在堆内存中建立对象的特有属性,并进行默认初始化。
      (null,0, false, ...)

     5.对属性进行显式初始化。(类里面,成员数据自己的初始化值)

     6.对对象进行构造代码块初始化。

     7.对对象进行与之对应的构造函数初始化。

     8.将内存地址赋给栈内存中的p变量。

     9.p.setName("lisi");非静态方法在栈区开辟setName();的空间,加载this,name(局部变量);谁调用的setName,this就是谁。运行完出栈释放。

9.static:非静态方法可以访问静态成员变量。

    调用静态成员函数的时候,用类名.调用。静态成员函数里只有静态成员变量,都在方法区(静态区)。

    如果一个类中一个static成员函数调用另外一个static成员函数,前面省略的是“类名.”,因为static函数里不能使用this关键字。


10.final最终的(类不能被继承,方法不能被重写,变量叫做常量)  

11.super(和this的用法一样,当子类和父类有同名数据时,用super.来调用父类的数据,如果子类要调用父类构造函数时用super();语句)
 
12.extends (继承),

13.类前现在只能写两个修饰符 public和final。

14.abstract(抽象:只能修饰类与方法)
    1.抽象方法必须放在抽象类中。
    2.抽象方法和抽象类必须用abstract关键字所修饰。
    3.抽象类不可以用new创建对象,因为调用抽象方法没意义。
    4.抽象类中的方法要被使用,必须由子类复写其所有的功能后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类.
    5.抽象可以强迫子类去复写。
    6.抽象类里也可以有一般有主体的方法。
    7.抽象类里可以不定义抽象方法,就是为了不让该类建立对象。
    8.abstract只能修饰类与方法。

15.interface(class用来定义类;interface用来定义接口)
        1.如果一个抽象类里所有方法都是抽象的,那么该类可以通过接口的形式来表示。
        2.接口里的方法都抽象。
    格式特点:
        1.接口中常见定义:常量,抽象方法。
        2.接口中的成员都有固定修饰符。
              常量:public static final
              方法:public abstract
        3.接口中的成员都是public的
        4.子类用implements关键字实现(继承),比extends累,子类需要把所有抽象方法都实现后才能实例化。子类实现的时候,实现的方法前必须加public关键字,因为要和父类有同样的权限才能覆盖。
        5.接口可以被类多implements实现。也就是说一个类可以同时实现多个接口。也是对多继承不支持的转换形式,java支持多实现。
        6.不支持多继承的原因是几个父类里有重复的方法,子类调用的时候会产生问题。
        7.支持多实现是因为接口里的方法都没有主体,子类只要覆盖一次就都覆盖。
        8.一个类在继承一个类的同时还能实现多个接口。
        9.java只有在接口与接口之间才存在多继承。类与类之间只存在单继承。
        10..接口与接口之间是继承extends关系。

16.d:
     dir 
    md 创建文件夹
    rd 删除文件夹
    cd
    cd.. 返回上一级
    cd\ 回到根目录
    del  *.class 删掉所有class文件
    exit 退出dos命令 
    cls 清屏
    ctrl+Z 回退

17.最简单两种无限循环表达式
    for(;;){}
    while(true){}
    for(表达式1;条件表达式;表达式2) { }   中:条件表达式必须为真或假;非真非假编译不通过;如果不写,默认为真。
    for里面的用作增量的变量,出大括号则释放。

18. 高级:for(数据类型 变量:集合/数组) { }

19.异常:是对问题的描述。将问题进行对象的封装。
------------
20.异常体系:
    Throwable
        |--Error
        |--Exception
             |--RuntimeException
21.异常体系的特点:异常体系中的素有类以及建立的对象都具备可抛性。
                也就是说可以被throw和throws关键字所操作。
                只有异常体系具备这个特点。
--------------
22.throw和throws的用法:
  throw定义在函数内,用于抛出异常对象。
  throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。

23.当函数内有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则编译失败。
     注意,RuntimeException除外。也就是说,函数内如果抛出的是RuntimeException异常,函数上可以不用声明。

24.如果函数声明了异常,调用者需要进行处理。处理方式可throws可try。
     注意:一般函数上不会抛RuntimeException,如果它在函数上抛出一个RuntimeException,这就是告诉你,这个异常是可以处理的。你可不处理,也可以处理。
---------------
25.异常有两种:
     (1)编译时被检测异常:
              该异常在编译时,如果没有处理(没有抛也没用try),编译失败。
              该异常被标识,代表这可以被处理。
     (2)运行时异常(编译时不检测)
              在编译时,不需要处理,编译器不检查。
              该异常发生,建议不处理,让程序停止,因为需要对代码修正。
---------------
26.异常处理语句:
    try
    {
         需要被检测的代码
    }
    catch(异常的引用)
    {
         处理异常的代码
    }
    finally
    {
         一定会执行的代码
    }

27.有三种结合格式:
    1. try
        {
        }
        catch()
        {
        }

    2. try
        {
        }
        finally
        {
        }

    3. try
        {
        }
        catch()
        {
        }
        finally
        {
        }

        注意:
                1.finally中定义的通常是 关闭资源代码。因为资源必须释放。
                2.finally只有一种情况不会被执行,当执行到System.exit(0);finally不会执行。

28.finally有一种情况是读不到的。
        try
        {
        }
        catch()
        {
                 System.exit(0);//系统,退出。jvm结束。
        }
        finally
        {
        }
---------------------
29.自定义异常:
     定义类,继承Exception或者RuntimeException。
                     1.为了让该自定义类具备可抛性
                     2.让该类具备操作异常的共性方法。

 30.当要定义自定义异常的信息时,可以使用父类已经定义好的功能。
         将异常信息传递给父类的构造函数。
         class MyException extends Exception
          {
                   MyException(String message)
                   {
                              super(message);
                   }
          }

         自定义异常:按照Java的面向对象思想,将程序中出现的特有问题进行封装。
----------------------
31.异常的好处:
          1.将问题进行封装。
          2.将正常流程代码和问题处理代码相分离,方便于阅读。

32.异常的处理原则:
          1.处理方式有两种:try 或者 throws。
          2.调用到抛出异常的功能时,抛出几个,就处理几个。
             一个try对应多个catch。
          3.多个catch,父类的catch放到最下面。
          4.catch内,需要定义针对性的处理方式。不要简单的定义printStackTrace,
             输出语句。也不要不写。
          5.当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。
                   try {
                          throw new AException();
                   }

----------------------------------------------------------------------------------------------------------------

33.当equals和"=="都比较对象的时候,可以简单这样理解:equals和==都是比较对象,但equals就是比较对象的内容,而==还会比较对象的地址。

     简介:equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。

               “ == ”用于比较引用和比较基本 数据类型时具有不同的 功能
                             比较基本 数据类型,如果两个值相同,则结果为true
                             而在比较引用时,如果引用指向内存中的同一对象,结果为true。
 
---------------------------------------------------------------------------------------------------------------------------------

Java的静态代码块、构造代码块、局部代码块 

静态代码块

class Demo

{

          static //静态代码块

         {

         }

}

随着类的加载而执行。而且只执行一次(这跟类的生命周期较长有关)。

作用:给类进行初始化。

 

构造代码块

class Demo

{

         {//构造代码块

         }

}

类中独立代码块。

作用:给所有对象进行初始化。

(构造函数是给对应的对象进行针对性的初始化。)

 

局部代码块

class Demo

{

         public void demo()

         {

                     {  //局部代码块

                     }

         }

}

方法中的空白代码块。

作用:限制局部变量的生命周期。

------------------------------------------------------------------------------------------------------------------

 

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值