《java从入门到精通视频笔记.doc》由会员分享,可在线阅读,更多相关《java从入门到精通视频笔记.doc(147页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、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
2、启动 绿色计划 1992 创建 oak语言 java 1994 gosling 参加 硅谷大会 演示java功能 震惊世界 1995 sun 正式发布java第一个版本,目前最新的是jdk7.0 3. java开发工具:记事本,jcreator,jbuilder,netbean,eclipse 4. jdk包括:jre(java运行环境)java的类库:3600多个,常用的150多个 5. 第一个程序:/ 阿贵/功能:显示“HelloWorld” /public:表示类是公共的,一个文件中只有一个public类/class:表示这个是一个类/HelloWorld:类名(公共类的类名,必须和文件
3、名一样) public class HelloWorld/一个主函数,程序的入口public static void main (String args) /执行语句 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 sho
4、rt两个字节:-32768-+32767 long八个字节: )小数(浮点): float double布尔 :boolean字符:char(两个字节,可以存放汉字, char test1 =中;) 引申到 字符串(类) 3. 在java中对char进行运算的时候,直接是当做ASCII码对应的整数 4. 数据不能从高精度到低精度的转换 Byteshortintlongfloat受保护默认私有12.13.包的三大作用:区分相同名字的类 当类很多的时候可以很好的管理类 控制访问范围14.包的打包命令:package com.xiaoming 一般放在文件的开始的地方15.引包命令:improt 包
5、名 第10讲 访问修饰符 重载 覆盖1.一个文家中如果只有public类,那么这个public类可以不用主函数2. 不想被继承就设为protected3.子类最多只能继承一个父类,Java里面不允许一个子类继承多个父类,C+却可以,如Java中一定要呢,就用接口吧4.Java的所有类都是Object 的子类,继承层次数没有限制6.在做开发的时候多使用JDK帮助文档7.方法重载:类的同一种功能的多种实现方式,取决于调用者传递的参数8.方法重载注意事项: 方法名相同 方法的参数类型,个数,顺序至少有一项不同 方法的修饰符可以不同 方法的返回类型可以不同另外: 只是返回类型不一样并不构成重载 只是控
6、制访问修饰符不一样不构成重载 第11讲 约瑟夫问题(丢手帕问题)1.方法覆盖的:子类有一个方法和父类的某个方法名称、返回类型、参数一样2.方法覆盖注意: 子类的方法的返回类型、参数、方法名称要和父类的一样,否则编译出错 子类方法不能缩小父类方法的访问权限,但是扩大是可以的3.丢手帕问题: 第十二讲 多态1.多态性:访问子类可以通过访问父类:Animal cat =new Cat();Animal dog =new Dog();2.在使用多态的时候,如果有使用覆盖函数,那么被覆盖的方法(即是父类中的的那个相应的方法)是要存在的。3. 多态:一个引用(类型)在不同情况下的多种状态,可使代码更加灵活
7、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(); /动物
8、类 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; class Food String name; public void showName() class Fish extends Food public void showName() 第十三讲
9、 抽象类接口 (难点重点)1.父类方法的不确定性,用抽象类修饰这个方法,abstract。2.抽象类还是可以一样被继承3. 当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现4.用abstract关键词来修饰的时候,一定是抽象类和抽象方法5.在使用中不多,公司笔试的时候考很多6.抽象类不能被实例化,只有被继承以后再去实例化7.抽象类不一定要包含abstract方法,就算没有abstract方法,也不能实例化它8.一旦类包含了abstract方法,这个类必须声明为abstract9.抽象方法不能有主体“ package com.s1; public class Demo1
10、 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.接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,再根
11、据具体情况把这些方法写出来,语法: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 sta
12、rt(); /停止工作 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 s
13、top() 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.
14、接口中的变量本质上都是静态的,而且是final,不管你加不加static,所以可以直接使用:接口名.变量名20.在 java开发中,经常把常用的变量定义在接口中作为全局变量使用 访问形式:接口名.变量名21.一个接口不能继承其它的类,但是可以继承别的接口22.接口体现了程序设计的多态和高内聚低耦合的思想 第十四课 final 作业评讲1.实现接口和继承父类的区别:2.java是单继承,一个类只允许继承一个父类,这种单继承的机制可以保证类的纯洁性,比C+的多继承机制简洁3.实现接口可以看做是对单继承的一种补充4.继承是层次式的,不太灵活,修改某个类就会打破这种继承的平衡,但是接口就不会,因为只针
15、对实现接口的类才起作用5.用接口体现多态:6.前期绑定:在程序运行之前就进行绑定,由编译器和连接程序实现,又叫静态绑定,如static方法和final方法,包括private方法,它是隐式fi nal的7.后期绑定:在运行的时候根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑定,或是运行时绑定,除前期绑定外的所有方法都属于后期绑定8./展示接口实现多态的概念 package com.s2; /汽车接口interface Car String getName();/获得名字 int getPrice();/获得价格 /宝马 class BMW implements Car public
16、 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
17、.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修饰当不希望类的某个变量的值被修改,可以用fi
18、nal修饰当不希望类被继承时,可以用final修饰10.final修饰的变量一般用下划线书写11.如果一个变量是final的,那么定义时候必须赋初值12.final修饰的变量又叫常量,一般用XX_XX_XX命名13.final什么时候用: 处于安全的考虑,类的某个方法不允许修改 类不会被其它的类继承 某些变量值是固定不变的,比如pi第15讲 讲题目1.switch只能对int、short、byte以及枚举类型进行判断,case后面只能是常量表达是2.猜拳的java程序设计: 有个人Tom设计他的成员变量,成员方法,和电脑猜拳,电脑每次都产生一个随机数0,1,2,0表示石头,1表示剪刀,2表示布
19、。请实现:第16讲 数组1.数组是可以存放多个同一类型的数据2.用法: 程序员用法:数组定义:数据类型 数组名=new 数据类型大小; 如:int arr=new int5;或者是int arr=new int5; 或者是int arr=new int5; 数组引用:数组名下标 没事找事用法:数组定义: int arr; arr=new int5;或者是int arr; arr=new int5;或者是int arr; arr=new int5;数组引用:数组名下标 古板用法:int a=1,2,3,4,5,6,7,8,9,0;数组引用:数组名下标 3.知道数组的大小:arr.length(成
20、员属性)4.引用在栈里面,对象在堆里面5.对象数组: package com.test1;importpublic class Demno5_2 public static void main(String args)throws IOException Dog dog=new Dog4; InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); for (int i=0;i4;i+) dogi=new Dog(); System.out.println(
21、请输入第+(i+1)+只狗名字); /输入狗名 /try String name=br.readLine();/将名字赋给对象 / catch (Exception e) / TODO Auto-generated catch block / e.printStackTrace(); / dogi.setName(name); System.out.println(请输入第+(i+1)+只狗的体重:); String s_weight=br.readLine(); float weight=Float.parseFloat(s_weight); / 将名字赋给对象 dogi.setWeight
22、(weight); float allWeight=0; for(int i=0;i4;i+) allWeight+=dogi.getWeight(); float avgWeight=allWeight/dog.length; System.out.println(狗总体重:+allWeight+狗平均体重:+avgWeight); /定义一个狗类class Dog private String name; private float weight; public void setName(String name) this.name = name; public void setWeigh
23、t(float weight) this.weight = weight; public float getWeight() return this.weight; 4.对象、字符串的很多不能用”=”,用的话是表示地址相等,比较字符串的内容是否相等是用equals方法5. 数组可存放同一类型数据 简单数据类型(int,float)数组,可以直接赋值 对象数组在定义后,赋值时候需要再次为每个对象分配空间【即是:new 对象】 数组大小必须事先指定,如:int x;int a=new intx;是可以的 数组名可以理解为指向数组首地址的引用 数组的下标是从0开始标号的 6.排序的介绍:排序是将一群
24、数据依据一定的顺序进行排列的过程 分类:内部排序:将要排序的所有数据都加在到内存里面进行排序,包括交换式排序法、选择式排序法和插入式排序法外部排序:数据量过大,无法全部加载到内存,包括合并排序法和直接合并排序法 7.交换式排序法属于内部排序法,是运用数据值比较后,依判断规则对数据的位置进行交换,已达到排序的目的,它包括:冒泡排序法(Bubble sort)和快速排序法(Quick sort) 8.冒泡排序法:第一次写法:package com.test1; public class Demo5_3 public static void main(String args) int arr=1,6
25、,0,-1,9,4,5,1,-5,4,7; /排序开始 / for(int i=0;iarr.length-1;i+) /内层循环开始逐一比较,如果发现前一个数比后一个数大,就交换 for (int j=0;jarrj+1) arrj=arrjarrj+1; arrj+1=arrjarrj+1; arrj=arrjarrj+1; for(int i=0;i=arr.length-1;i+) System.out.print(arri+ ); System.out.print(总长度是+arr.length); 我们进行改进,进行封装试试看:package com.test1; public c
26、lass Demo5_3 public static void main(String args) int arr=1,6,0,-1,9,4,5,1,-5,4,7; Bubble bubble=new Bubble(); bubble.set(arr); /排序开始 / class Bubble public void set(int arr) for(int i=0;iarr.length-1;i+) /内层循环开始逐一比较,如果发现前一个数比后一个数大,就交换 for (int j=0;jarrj+1) arrj=arrjarrj+1; arrj+1=arrjarrj+1; arrj=ar
27、rjarrj+1; for(int i=0;i=arr.length-1;i+) System.out.print(arri+ ); System.out.print(总长度是+arr.length); 9.注意:新建一个类的对象而且调用了类的方法时候,虚拟机会在主栈的外面给调用的这个方法分配一个相应的栈,在外面的这个栈里面对数组或者对象的操作就是对主栈的相应的数组或者对象的操作,但是不是针对所有的类型,如果是int等简单类型就不行。10.选择式排序法:选择排序法(快于冒泡排序法): 选择排序法(select sorting)也是一种简单的排序方法,第一次从R0Rn-1中寻选取最小值,与R0交
28、换,第二次从R1Rn-1中选取最小值,与R1交换,第三次从R2Rn-1中选取最小值与R2交换总共(n-1)次。第十八讲 排序 查找1.插入式排序法分为: 插入排序法(Insertion Sort) 谢尔排序法(shell sort) 二叉树排序法(Binary-tree sort)2.插入式排序法插入排序法(Insertion Sorting)基本思想:把n个待排序的元素看成是一个有序表和一个无序表,开始时候有序表只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出一个元素,把她的排序吗一次和有序表元素的排序码进行比较,将它插入到有序表的适当位置,使之成为新的有序表。3.插
29、入法的实现:package com.test1; public class Demo5_4 public static void main(String args) int arr=1,6,3,10,8,7,9,0,0,-199,9; Insert insert =new Insert(); insert.sort(arr); class Insert public void sort(int arr) for (int i=1;i=0&insertValarrindex) /将要把arrindex向后移动 arrindex+1=arrindex; /让index向前移动 index-; /将indexVal插入到适当位置 arrindex+1=insertVal; System.out.println(结果是:); for (int p=0;p=arr.length-1;p+) System.out.print(arrp+ ); 4.交换式排序法快速排序法快速排序(Quick sort)是对