java学习笔记——韩顺平视频

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习笔记——韩顺平视频相关的知识,希望对你有一定的参考价值。

第0讲:开山篇

1.  Java se J2se        桌面

Java ee J2ee        网络

Java me J2me        手机

 

2.  SQL server   mysql   Oracle

 

3. 学习软件编程的注意事项

    1.高效愉快学习

    2.先建立一个整体框架然后细节

    3.用什么再学习什么

    4.先知道how,再知道why

    5.软件编程是一门“做中学”学科,做了才会

    6.适当囫囵吞枣

    7.琢磨别人怎么做,不是我认为这么做

 

1  内容介绍.项目演示.原理剖析

1.  课程包括:java面向对象编程,java图形界面,java数据库编程,java文件i/o流,java网络编程,java的多线程

 

2.  Java历史:1990 sun 启动 绿色计划

     1992 创建 oak语言—> java

     1994 gosling 参加 硅谷大会 演示java功能 震惊世界

     1995 sun 正式发布java第一个版本,目前最新的是jdk7.0

 

3.  java开发工具:记事本,jcreator,jbuilder,netbean,eclipse

 

4.  jdk包括:jre(java运行环境)

java的工具:编译器javac.exe解释执行器java.exe

java的类库:3600多个,常用的150多个

 

5.  第一个程序:

//功能:显示“HelloWorld”

 

//public:表示类是公共的,一个文件中只有一个public类

//class:表示这个是一个类

//HelloWorld:类名(公共类的类名,必须和文件名一样)

public class HelloWorld

{

//一个主函数,程序的入口

public static void main (String args[])

{

     //执行语句

     System.out.println("helloWorld!");

}

}

 

6.  Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe) 将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行

 

第2讲    变量.数据类型

1.       在java里面int占4个字节,long占8个字节

 

2.       Java基本数据类型:

整数 :(byte一个字节 :-128---127  int四个字节:-2147483648---+2147483647   

short两个字节:-32768---+32767  long八个字节: )

小数(浮点): float  double

布尔 :boolean

字符:char(两个字节,可以存放汉字, char test1 =‘中‘;)                引申到 字符串(类)

 

3.       在java中对char进行运算的时候,直接是当做ASCII码对应的整数

 

4.       数据不能从高精度到低精度的转换  Byte<short<int<long<float<double

float a=3.4;是过不去的,在java中小数默认是double(双精度)的

应该写成是float a=3.4f;

不过可以强制转换:int a=(int)1.2; int b=(int)1.9

5.       int a=1;int b=a+1.2;  a先是往高精度转换,然后赋给b,就报错  改成int a=1;double b=a+1.2; 或者     int a=1;float b=a+1.2f; 就解决了

 

第4讲    流程控制

1.       switch case语句中,switch条件表达式的数据类型应该和后面case的类型一致

 

2.       switch case语句中,可用的数据类型主要是:byte short int char enum

 

3.       当型循环:for 和 while 循环

 

4.       直到型循环: do while循环

 

第5讲    类与对象

1.       面向对象编程-类与对象

类名首字母大写    

类里面的元素叫类的成员变量/属性

 

2.       类的定义

package 包名;

class 类名 extends 父类 implements

接口名

{

           成员变量;

           构造方法;

           成员方法;

}

 

3.       如何创建对象:

先声明再创建 Cat  cat1;cat1=new  Cat();

         一步到位        Cat  cat1 =new  Cat();

 

4.       引用传递类似于指针一样

 

第6讲    成员属性  成员方法

1.       对象总是在内存中的

 

2.       类成员方法:方法就是指某些行为,表示为函数

public 返回数据类型  方法名 (参数列表)

{

           语句;//方法(函数)主题

}

 

3.       类名首字母大写  方法名首字母小写           驼峰法(匈牙利法)     下划线法

 

4.        指针是存储地址的,不因为它的指向的数据的类型而改变大小。

 

第7讲 成员方法(函数)  构造方法

1.       类的成员方法声明

访问修饰符 数据类型 函数名(参数列表);

2.       方法的参数列表是多个的,参数列表的数据类型是任意的

3.       在调用某个成员方法的时候给出的具体数值的个数和类型要相匹配

4.       方法可以没有返回值

5.       先设计类,然后根据类创建对象

6.       构造方法(构造函数):完成对新对象的初始化:

方法名和类名相同

没有返回值

在创建一个类的新对象时,系统会自动调用该类的构造方法完成对新对象的初始化

一个类可以定义多个不同的构造方法

每个类都有一个默认的构造方法

 

第8讲 this 类变量

1.       this属于类的对象的而不是属于类的

2.       5this不能在类的外部使用,只能在类定义时候使用!

3.       可以用类名直接访问静态变量

 

第9讲 类方法 封装

1.类变量是该类的所有对象共享的对象,一改全改了

2.定义语法:访问修饰符 static 数据类型 变量名

3.     public class Demo9

{

static int i=1;

 

static

{

           System.out.println("zhixingyicile");

           i++;

}//会自动执行一次,也只有一次

 

public Demo9()

{

           System.out.println("ffffffff");

           i++;

}

 

public static void main(String args[])

{

           Demo9 t1=new Demo9();

           System.out.println(Demo9.i);

           Demo9 t2=new Demo9();

           System.out.println(i);

 

}

}

 

4.类方法(静态方法、静态函数):属于所有对象实例的

5.Java中:类变量(static)原则上用类方法(static)去访问;类方法中不能访问非静态变量

,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)

使用:类名.类方法名     对象名.类方法名

6.非类变量就是实例变量,属于每个对象自己的

7.Java面向对象编程的三(四)大特征:封装、继承、多态(、抽象)

8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象

9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。

10.封装的访问控制修饰符

11.四种访问控制符:

公开级别:public

受保护级别:对子类和同一个包中的类公开

默认级别: 没有修饰符,向同一个包的类公开,子类不可以访问类中默认级别的元素的

私有级别:用private修饰,只有类本身才能访问

公开>受保护>默认>私有

12.



13.包的三大作用:区分相同名字的类  当类很多的时候可以很好的管理类 控制访问范围

14.包的打包命令:package  com.xiaoming  一般放在文件的开始的地方

15.引包命令:improt 包名


 

第10讲 访问修饰符  重载  覆盖

1.一个文家中如果只有public类,那么这个public类可以不用主函数

2. 不想被继承就设为protected

3.子类最多只能继承一个父类,Java里面不允许一个子类继承多个父类,C++却可以,如Java中一定要呢,就用接口吧

4.Java的所有类都是Object 的子类,继承层次数没有限制

5.JDK6.0里面有202个包,3777个类、接口、异常、枚举、注释和错误

6.在做开发的时候多使用JDK帮助文档

7.方法重载:类的同一种功能的多种实现方式,取决于调用者传递的参数

8.方法重载注意事项:

  方法名相同

  方法的参数类型,个数,顺序至少有一项不同

  方法的修饰符可以不同

  方法的返回类型可以不同

另外:

  只是返回类型不一样并不构成重载

  只是控制访问修饰符不一样不构成重载

 

第11讲  约瑟夫问题(丢手帕问题)

1.方法覆盖的:子类有一个方法和父类的某个方法名称、返回类型、参数一样

2.方法覆盖注意:

  子类的方法的返回类型、参数、方法名称要和父类的一样,否则编译出错

  子类方法不能缩小父类方法的访问权限,但是扩大是可以的

3.丢手帕问题:

 

第十二讲  多态

1.多态性:访问子类可以通过访问父类:

Animal cat =new Cat();

Animal dog =new Dog();

2.在使用多态的时候,如果有使用覆盖函数,那么被覆盖的方法(即是父类中的的那个相应的方法)是要存在的。

3. 多态:一个引用(类型)在不同情况下的多种状态,可使代码更加灵活

4.java允许父类的引用变量引用它子类的实例,是自动完成的

 

代码:

 

package com.agui;

public class Demo5 {

 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Dog2 ddd=new Dog2();
  ddd.cry();
  Cat2 ccc=new Cat2();
  ccc.cry();
  Animal2 an =new Cat2();
  an.cry();
  Master xxx=new Master();
  xxx.feed(new Dog2(),new Bone());
 }

}


//动物类
 class Animal2
{
 String name;
 int age;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }

 //叫
 public void cry()
 {
  System.out.println("buxiaodezenmejiao");

 }
 public void eat()
 {
 
  System.out.println("buzhidao chishenme");
 
 }
}
 
 class Master
 {
  //使用多态,方法就可以用一个了
 
 public void feed(Animal2 an,Food f)
  {
   an.eat();
   f.showName();
  }
 }

 
class Food
{
 String name;
 public void showName()
 {
 
 }
}

class Fish extends Food
{
 public void showName()
 {
  System.out.println("yurou");
 
 }
 
}
class Bone extends Food
{
 public void showName()
 {
  System.out.println("gutou");
 
 }
 
}

 


class Cat2 extends Animal2
{
//猫自己叫
 public void cry()
 {
  System.out.println("maomaojiao");
 }
 public void eat()
 {
  System.out.println("aichiyu");
 }

}


class Dog2 extends Animal2
{
 //gou自己叫
 public void cry()
 {
  System.out.println("wangwangjiao");
 }
 public void eat()
 {
 
  System.out.println("aichigutou");
 
 }

}

 

第十三讲  抽象类接口 (难点重点)

1.父类方法的不确定性,用抽象类修饰这个方法,abstract。

2.抽象类还是可以一样被继承

3. 当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现

4.用abstract关键词来修饰的时候,一定是抽象类和抽象方法

5.在使用中不多,公司笔试的时候考很多

6.抽象类不能被实例化,只有被继承以后再去实例化

7.抽象类不一定要包含abstract方法,就算没有abstract方法,也不能实例化它

8.一旦类包含了abstract方法,这个类必须声明为abstract

9.抽象方法不能有主体“{}“

 

 

package com.s1;

 

public class Demo1 {

 

  

    public static void main(String[] args) {

       // TODO Auto-generated method stub

 

    }

 

}

 

abstract class Animal

{

    String name;

    int age;

    abstract public void cry();

  

}

 

//当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现

class Cat extends Animal

{

    public void cry()

    {

       //do nothing

       System.out.println("喵喵叫");

     

    }

}

 

 

10.接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来,语法:

class 类名 implements 接口

{

         方法;

         变量;

}

 

 

 

package com.s1;

 

public class Demo2 {

    public static void main(String[] args)

    {

       Computer computer=new Computer();

       Camera camera=new Camera();

       Phone phone=new Phone();

       computer.useUsb(camera);

       computer.useUsb(phone);

    }

 

}

 

interface  Usb

{

    //声明了两个方法

    //开始工作

    public void start();

    //停止工作

    public void stop();

  

}

 

//照相机,实现Usb接口

//一个类实现接口就要把所有的类全部实现!

class Camera implements Usb

{

    public void start()

    {

       System.out.println("我是照相机,我开始工作了!");

    }

    public void stop()

    {

       System.out.println("我是照相机,我停止工作了!");

     

    }

     

}

 

//手机类

 

class Phone implements Usb

{

    public void start()

    {

       System.out.println("我是手机,我开始工作了!"); 

    }

    public void stop()

    {

       System.out.println("我是手机,我停止工作了!"); 

     

    }

  

}

 

//计算机

class Computer

    //开始使用USB接口

    public void useUsb(Usb usb)//体现多态

    {

       usb.start();

       usb.stop();

  

    }

}

11.接口不能被实例化

12.接口中的所有方法都不能有主体

13.抽象类里面是可以有实现了的方法的

14.接口中的所有方法都不能有主体,即都不能被实现

15.接口是更加抽象的抽象类!!!!

16.一个类继承抽象类或是使用接口,那么就要实现所有的抽象方法

17.一个类可以实现多个接口

18.接口中可以有变量(但是不能用private,protected修饰)

19.接口中的变量本质上都是静态的,而且是final,不管你加不加static,所以可以直接使用:接口名.变量名

20.在 java开发中,经常把常用的变量定义在接口中作为全局变量使用

  访问形式:接口名.变量名

21.一个接口不能继承其它的类,但是可以继承别的接口

22.接口体现了程序设计的多态和高内聚低耦合的思想

 

第十四课 final 作业评讲

1.实现接口和继承父类的区别:

2.java是单继承,一个类只允许继承一个父类,这种单继承的机制可以保证类的纯洁性,比C++的多继承机制简洁

3.实现接口可以看做是对单继承的一种补充

4.继承是层次式的,不太灵活,修改某个类就会打破这种继承的平衡,但是接口就不会,因为只针对实现接口的类才起作用

5.用接口体现多态:

6.前期绑定:在程序运行之前就进行绑定,由编译器和连接程序实现,又叫静态绑定,如static方法和final方法,包括private方法,它是隐式fi nal的

7.后期绑定:在运行的时候根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑定,或是运行时绑定,除前期绑定外的所有方法都属于后期绑定

8.

//展示接口实现多态的概念

 

package com.s2;

 

//汽车接口

interface Car

{

    String getName();//获得名字

    int getPrice();//获得价格

}

 

//宝马

 class BMW implements Car

 {

     public String getName()

     {

        return "我日,宝马啊";          

     }

     public int getPrice()

     {

        return 800000;

     }

    

 }

 

class QQ implements Car

{

    public String getName()

    {

       return "没意思的,qq";

    }

  

    public int getPrice()

    {

       return 20000;

    }

 

}

 

 

public class CarShop

{

    //售车的收入

    private int money=0;

  

 

    //卖出一部车

    public void sellCar(Car car)

    {

       System.out.println("车型:"+car.getName()+"价格是:"+car.getPrice());

       money+=car.getPrice();

    }

  

    public int getMoney()

    {

       return money;   

    }

  

    public static void main(String []args)

    {

       CarShop a=new CarShop();

       //卖出宝马

       a.sellCar(new BMW());

       //卖出qq

       a.sellCar(new QQ());

     

       System.out.println("总收入是:"+a.getMoney());

     

    }

  

}

9.final概念:final可以修饰变量和方法

当不希望父类的某些方法被子类覆盖的时,可以用final修饰

当不希望类的某个变量的值被修改,可以用final修饰

当不希望类被继承时,可以用final修饰

10.final修饰的变量一般用下划线书写

11.如果一个变量是final的,那么定义时候必须赋初值

12.final修饰的变量又叫常量,一般用XX_XX_XX命名

13.final什么时候用:

  处于安全的考虑,类的某个方法不允许修改

  类不会被其它的类继承

  某些变量值是固定不变的,比如pi






































































































以上是关于java学习笔记——韩顺平视频的主要内容,如果未能解决你的问题,请参考以下文章

我最近下了韩顺平的java学习视频,其中有五个大内容,我应该以哪个顺序来学习呢?

韩顺平循序渐进学Java零基础学习笔记

Java坦克大战 跟学韩顺平老师视频开发

http请求详解,防盗链技术_韩顺平PHP视频听课笔记

0925 韩顺平java视频

尚硅谷 韩顺平 Java数据结构和算法