版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. J
2、ava历史: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.exejava的类库:3600多个,常用的150多个 5. 第一个程序:/功能:显示“HelloWorld”/public:表示类是公共的,一个文件中只有一个public
3、类/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个
4、字节 2. Java基本数据类型:整数 :(byte一个字节 :-128-127 int四个字节:-+ short两个字节:-32768-+32767 long八个字节: )小数(浮点): float double布尔 :boolean字符:char(两个字节,可以存放汉字, char test1 =中;) 引申到 字符串(类) 3. 在java中对char进行运算的时候,直接是当做ASCII码对应的整数 4. 数据不能从高精度到低精度的转换 Byteshortintlongfloat受保护默认私有12.13.包的三大作用:区分相同名字的类 当类很多的时候可以很好的管理类 控制访问范围14.包
5、的打包命令:package com.xiaoming 一般放在文件的开始的地方15.引包命令:improt 包名 第10讲 访问修饰符 重载 覆盖1.一个文家中如果只有public类,那么这个public类可以不用主函数2. 不想被继承就设为protected3.子类最多只能继承一个父类,Java里面不允许一个子类继承多个父类,C+却可以,如Java中一定要呢,就用接口吧4.Java的所有类都是Object 的子类,继承层次数没有限制5.JDK6.0里面有202个包,3777个类、接口、异常、枚举、注释和错误6.在做开发的时候多使用JDK帮助文档7.方法重载:类的同一种功能的多种实现方式,取决
6、于调用者传递的参数8.方法重载注意事项: 方法名相同 方法的参数类型,个数,顺序至少有一项不同 方法的修饰符可以不同 方法的返回类型可以不同另外: 只是返回类型不一样并不构成重载 只是控制访问修饰符不一样不构成重载 第11讲 约瑟夫问题(丢手帕问题)1.方法覆盖的:子类有一个方法和父类的某个方法名称、返回类型、参数一样2.方法覆盖注意: 子类的方法的返回类型、参数、方法名称要和父类的一样,否则编译出错 子类方法不能缩小父类方法的访问权限,但是扩大是可以的3.丢手帕问题: 第十二讲 多态1.多态性:访问子类可以通过访问父类:Animal cat =new Cat();Animal dog =ne
7、w 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(); A
8、nimal2 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) = name; public int getAge() return age; public void setAge(int age) this.age = age; /叫 pu
9、blic 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() Syst
10、em.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(wa
11、ngwangjiao); public void eat() System.out.println(aichigutou); 第十三讲 抽象类接口 (难点重点)1.父类方法的不确定性,用抽象类修饰这个方法,abstract。2.抽象类还是可以一样被继承3. 当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现4.用abstract关键词来修饰的时候,一定是抽象类和抽象方法5.在使用中不多,公司笔试的时候考很多6.抽象类不能被实例化,只有被继承以后再去实例化7.抽象类不一定要包含abstract方法,就算没有abstract方法,也不能实例化它8.一旦类包含了abstrac
12、t方法,这个类必须声明为abstract9.抽象方法不能有主体“ 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 noth
13、ing 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); c
14、omputer.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
15、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.一个类继承抽象类或是使用接口,
16、那么就要实现所有的抽象方法17.一个类可以实现多个接口18.接口中可以有变量(但是不能用private,protected修饰)19.接口中的变量本质上都是静态的,而且是final,不管你加不加static,所以可以直接使用:接口名.变量名20.在 java开发中,经常把常用的变量定义在接口中作为全局变量使用 访问形式:接口名.变量名21.一个接口不能继承其它的类,但是可以继承别的接口22.接口体现了程序设计的多态和高内聚低耦合的思想 第十四课 final 作业评讲1.实现接口和继承父类的区别:2.java是单继承,一个类只允许继承一个父类,这种单继承的机制可以保证类的纯洁性,比C+的多继承机
17、制简洁3.实现接口可以看做是对单继承的一种补充4.继承是层次式的,不太灵活,修改某个类就会打破这种继承的平衡,但是接口就不会,因为只针对实现接口的类才起作用5.用接口体现多态:6.前期绑定:在程序运行之前就进行绑定,由编译器和连接程序实现,又叫静态绑定,如static方法和final方法,包括private方法,它是隐式fi nal的7.后期绑定:在运行的时候根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑定,或是运行时绑定,除前期绑定外的所有方法都属于后期绑定8./展示接口实现多态的概念 package com.s2; /汽车接口interface Car String getNa
18、me();/获得名字 int getPrice();/获得价格 /宝马 class BMW implements Car public String getName() return 我日,宝马啊; public int getPrice() return ; class QQ implements Car public String getName() return 没意思的,qq; public int getPrice() return 20000; public class CarShop /售车的收入 private int money=0; /卖出一部车 public void s
19、ellCar(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概念:fin
20、al可以修饰变量和方法当不希望父类的某些方法被子类覆盖的时,可以用final修饰当不希望类的某个变量的值被修改,可以用final修饰当不希望类被继承时,可以用final修饰10.final修饰的变量一般用下划线书写11.如果一个变量是final的,那么定义时候必须赋初值12.final修饰的变量又叫常量,一般用XX_XX_XX命名13.final什么时候用: 处于安全的考虑,类的某个方法不允许修改 类不会被其它的类继承 某些变量值是固定不变的,比如pi第15讲 讲题目1.switch只能对int、short、byte以及枚举类型进行判断,case后面只能是常量表达是2.猜拳的java程序设计:
21、 有个人Tom设计他的成员变量,成员方法,和电脑猜拳,电脑每次都产生一个随机数0,1,2,0表示石头,1表示剪刀,2表示布。请实现:第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;数组引用:数组名下标 古板用
22、法:int a=1,2,3,4,5,6,7,8,9,0;数组引用:数组名下标 3.知道数组的大小:arr.length(成员属性)4.引用在栈里面,对象在堆里面5.对象数组: package com.test1;import java.io.*;public class Demno5_2 public static void main(String args)throws IOException Dog dog=new Dog4; InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new Buff
23、eredReader(isr); for (int i=0;i4;i+) dogi=new Dog(); System.out.println(请输入第+(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.readL
24、ine(); float weight=Float.parseFloat(s_weight); / 将名字赋给对象 dogi.setWeight(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;
25、 public void setName(String name) = name; public void setWeight(float weight) this.weight = weight; public float getWeight() return this.weight; 4.对象、字符串的很多不能用”=”,用的话是表示地址相等,比较字符串的内容是否相等是用equals方法5. 数组可存放同一类型数据 简单数据类型(int,float)数组,可以直接赋值 对象数组在定义后,赋值时候需要再次为每个对象分配空间【即是:new 对象】 数组大小必须事先指定,如:i
26、nt x;int a=new intx;是可以的 数组名可以理解为指向数组首地址的引用 数组的下标是从0开始标号的 6.排序的介绍:排序是将一群数据依据一定的顺序进行排列的过程 分类:内部排序:将要排序的所有数据都加在到内存里面进行排序,包括交换式排序法、选择式排序法和插入式排序法外部排序:数据量过大,无法全部加载到内存,包括合并排序法和直接合并排序法 7.交换式排序法属于内部排序法,是运用数据值比较后,依判断规则对数据的位置进行交换,已达到排序的目的,它包括:冒泡排序法(Bubble sort)和快速排序法(Quick sort) 8.冒泡排序法:第一次写法:package com.test
27、1; public class Demo5_3 public static void main(String args) int arr=1,6,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+ ); Syste
28、m.out.print(总长度是+arr.length); 我们进行改进,进行封装试试看:package com.test1; public class 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+) /内层循环开始逐一比较,如果发现前一个数比后一个
29、数大,就交换 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); 9.注意:新建一个类的对象而且调用了类的方法时候,虚拟机会在主栈的外面给调用的这个方法分配一个相应的栈,在外面的这个栈里面对数组或者对象的操作就是对主栈的相应的数组或者对象的操作,但是不是针对所有的类型,如果是int等简单类型就不行。10.选择式排序法
30、:选择排序法(快于冒泡排序法): 选择排序法(select sorting)也是一种简单的排序方法,第一次从R0Rn-1中寻选取最小值,与R0交换,第二次从R1Rn-1中选取最小值,与R1交换,第三次从R2Rn-1中选取最小值与R2交换总共(n-1)次。第十八讲 排序 查找1.插入式排序法分为: 插入排序法(Insertion Sort) 谢尔排序法(shell sort) 二叉树排序法(Binary-tree sort)2.插入式排序法插入排序法(Insertion Sorting)基本思想:把n个待排序的元素看成是一个有序表和一个无序表,开始时候有序表只包含一个元素,无序表中包含有n-1个
31、元素,排序过程中每次从无序表中取出一个元素,把她的排序吗一次和有序表元素的排序码进行比较,将它插入到有序表的适当位置,使之成为新的有序表。3.插入法的实现:package com.test1;/import java.util.*; 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
32、(int i=1;i=0&insertValarrindex) /将要把arrindex向后移动 arrindex+1=arrindex; /让index向前移动 index-; /将indexVal插入到适当位置 arrindex+1=insertVal; System.out.println(结果是:); for (int p=0;p=leftIndex) /如果要找的数比midVal小 if(midValval) find(leftIndex,midIndex-1,val,arr); else if(midValval) /在右边找 find(midIndex+1,rightIndex,
33、val,arr); else if(midVal=val) System.out.println(找到了,它的下标是:+ +midIndex); else System.out.println(我日,真的找不到啊,麻烦你核对一下再找好不好!); 第十九讲 多维数组1.多维数组,定义: 语法:类型 数组名=new 类型大小大小 int a=new int 232. public class Demo5_6 public static void main(String args) int a=new int46; a12=1; a21=2; a23=3; for (int i=0;i4;i+) /
34、列 for (int j=0;j-)7.2&3= 2|3= -5=(1000 0101-(补码)-)48.有3个移位运算符:算术右移:低位溢出,符号位不变,并用符号位补由于移动而空出的高位逻辑右移:9.记住:对负数操作就要先找补码!正数也是,只不过不边罢了。得到的结果如果是正数就结束,如果是负数就再折腾一下,转变成原码才行。10.-1移动任意位都是-111.12(相当于是*4)=4,-12(相当于是*4)=-412. 而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就取决于机器了!(算术右移和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0) 第21讲 集合1.集合类 泛型 异常的处理2.解决方法:链表或者集合类(可以动态的改变),请熟悉常用的集合类3.集合类分类: List结构的集合类: ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类 HashMap类,HashTable类 Set结构的集合类 HashSet类,TreeSet类 Queue结构的集合类 Queue接口4.Ja
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年人教版小学数学二年级下册期末综合测试卷及答案
- 2026下半年重庆发展资产经营有限公司招聘7人笔试模拟试题及答案详解
- 2026鹿亭乡公开招聘专职消防员1人考试备考题库及答案详解
- 2026广东广州市黄埔区鱼珠街茅岗社区招聘专职律师1人考试参考题库及答案详解
- 2026年济南市济阳区农业发展集团有限公司社会公开招聘考试参考试题及答案详解
- 2026和田地区人民医院引进工作人员14人笔试参考题库及答案详解
- ISO 105-X112026 纺织品.色牢度试验.第X11部分耐热压色牢度标准立项发展报告
- ISO 1183-12025 塑料.非泡沫塑料密度的测定方法.第1部分浸渍法 液体比重瓶法和滴定法标准立项发展报告
- ISO 3691-22023 工业卡车.安全要求和验证.第2部分自行式可变伸缩卡车标准立项发展报告
- 2027年陕西邮电职业技术学院教师招聘笔试参考题库及答案详解
- (高清版)DB62∕T 4759-2023 灌区玉米覆膜节水栽培技术规程
- 浙教版小学劳动四年级上册教学计划、教学设计及教学总结
- 律师事务所廉政风险点及防控措施
- 全国职业院校技能大赛高职组(研学旅行赛项)备赛试题及答案
- (高清版)DB52∕T 1723-2023 城市道路占道作业交通组织与安全设施设置要求
- 沪科版八年级数学上册全册教案教学设计(含教学反思)
- 零星工程维修 投标方案(技术方案)
- 幼儿园如何家长会培训
- 2024至2030年中国泰妙菌素行业投资前景及策略咨询研究报告
- 高中化学必修一必修二综合测试题和解答
- (正式版)JBT 14660-2024 额定电压6kV到30kV地下掘进设备用橡皮绝缘软电缆
评论
0/150
提交评论