1、韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)1 | 447注:笔记中所有示例都能正常通过编译java 程序需要在虚拟机上才可以运行。不同系统上要安装对应的虚拟机才可以运行 java程序开发步骤1、编写源文件 (.java)2、编译源文件为类文件(.class)可用 J2SE 或 J2EE 编译3、在虚拟机上运行注释/单行注释/* */多行注释java 内容介绍java 编程可以分成三个方向:1、java se (j2se)桌面开发 java 中的基础中的基础2、java ee (j2ee)web 开发3、java me (j2me)手机开发java se 课程介绍java 面向
2、对象编程(基础)java 图开界面开发java 数据库编程java 文件 io 流编程java 网络编程java 多线程编程java ee 基础 1java 面向对象编程-数据库编程java sejava 基础 2html-css-javascriptdiv+cssjava ee 中级部分Servlet-Jspmvc 模式java ee 高级部分Struts-Ejb-Hibernate-Spring-Ajax(ext,dw2)ssh 框架java 之父 gosling1990 sun 启动 绿色计划1992 创建 oak 语言java1994 gosling 参加硅谷大会演示 java 功能,
3、震惊世界1995 sun 正式发布 java 第一个版本,目前最新是 jdk7.0韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)2 | 447注:笔记中所有示例都能正常通过编译java 开发工具记事本、(jcreator、jbuilder 退出舞台了)、netbean、eclipse如何选择开发工具先选择记事本,对 java 有一定了解后再使用 eclipse 高级开发工具为什么呢?1、更深刻的理解 java 技术,培养代码感2、有利于公司面试java 语言的特点1、java 语言是简单的2、java 语言是面向对象的3、java 语言是跨平台(操作系统)的即一次编译,到处运行4
4、、java 是高性能的java 第一个程序 hello.java运行 java 程序要安装和配置 jdkjdk 是什么?1、jdk 全称 java dvevlopment kit 中文 java 开发工具包2、jdk 是 sun 公司开发的3、jdk 包括 jre(java runtime envirnment)java 运行环境、一堆 java 工具和 java 基础的类库(类共 3600 左右,常用类在 150 个左右)4、可以在 下载*开发安装 jdk,用户执行需要安装 jre配置 JDK添加环境变量即可windows 下配置 jdk在计算机属性-高级设置-环境变量-添加 PATH 将
5、 JDK 所在路径指定即可。多个环境变量设置时需要用;号进行隔开1、编写第一个 hello.java/注释 (解释) 作者:/功能:在控制台显示“hello“/日期:2013.11.28/public:表示这个类是公共的,一个 java 文件中只能有一个 public 类/class:表示这是一个类/hello:类名(公共类的类名必须和文件名一致)public class hello/一个主函数,相当于是程序的入口public static void main(String args)/执行语句/System:是一个包韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)3 | 447注
6、:笔记中所有示例都能正常通过编译/out.println 是输入函数System.out.println(“hello!“);2、编译 hello.java 使用 javac hello.java3、执行 hello.java 使用 java hellojava 程序运行关系1、java 源文件(.java 文件)2、java 编译器即 javac.exe3、java 字节码文件(.class 文件)4、由解释执行器即(java.exe)将字节码文件加载到 java 虚拟器(jvm)5、字节码文件(.class)就会在 java 虚拟机中执行对 hello.java 程序进行改过使之变为一个简
7、单的加法运算程序/注释 (解释) 作者:/功能:在控制台显示“hello“/日期:2013.11.28/public:表示这个类是公共的,一个 java 文件中只能有一个 public 类/class:表示这是一个类/jiafa:类名(公共类的类名必须和文件名一致)public class jiafa/一个主函数,相当于是程序的入口public static void main(String args)/执行语句/System:是一个包/out.println 是输入函数/ System.out.println(“hello!“);int a=10;/定义一个变量,变量名 a,它的值 10in
8、t b=20;/定义一个变量,变量名 b,它的值 20int result=a+b;/定义一个叫 result 变量将变量 ab 相加的值赋值给 result/输出结果System.out.println(“结果是“+result);-为什么有变量不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位。java 中的基本数据类型的定义与 c/c+中大体一致。public class Testpublic static void main(String args)int a=1;/定义一个整形变量,取名 a,并赋初值 1int b=3;/定义一个整形变量,取名 b,并赋初值 3韩顺平
9、Java 从入门到精通视频( 全 94 讲详细笔记)4 | 447注:笔记中所有示例都能正常通过编译b=89;/给变量 b 赋 89System.out.println(a);/输出语句,把变量 a 的值输出System.out.println(b);/把变量 b 的值输出-java 基本语法-基本数据类型java 基本数据类型 四大类型整数类型、小数(浮点)类型、布尔类型、字符类型整数类型可以表示一个整数,常用的整数类型有:byte,short,int,long主要区别是 数据大小范围,请大家看一个小案例。byte 占用内存 一个字节 范围:-128 至 127short 占用内存 两个字节
10、 范围:-32768 至 32767int 占用内存 四个字节 范围:-2147483648 至 2147483647long 占用内存 八个字节 范围:-?至?小数(浮点)类型可以表示一个小数,常用的小数(浮点)类型有:float(单精度),double(双精度)float 占用内存 四个字节 范围:3.4E-38 至 3.4E+38 只能提供 7 位有效数字double 占用内存 八个字节 范围:1.7E-308 至 1.7E+308 可提供 16 位有效数字布尔类型可以表示“真“或者“假“,类型是 boolean比如:boolean spBool=true; /给变量 spBool 定义
11、为 boolean 型并赋值为真字符类型可以表示 单个字符,字符类型是 char。char 是两个字节(可以存放汉字)多个字符我们称为字符串,在 java 中 String 这种数据类型表示,但是 String 不是基本数据类型,而是类,类是复合数据类型。结论:在 java 中,对 char 进行运算的时候,直接当做 ascii 码对应的整数对待。思考:int test1=a+b; 输出值 195char test2=a+b; 输出值?char test3=中; 输出值 195韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)5 | 447注:笔记中所有示例都能正常通过编译java
12、基本语法-定义变量,初始化,赋值定义变量1、什么是定义变量?int a; 这就是定义了一个变量,变量名是 afloat haha;这也定义了一个变量,表示一个 float 类型的小数,变量名是 haha初始化变量在定义变量的时候,就给值int a=45;这就是初始化变量 a给变量赋值比如你先定义了变量:int tt;然后再给值 tt=780; -这就是给变量赋值-java 基本语法-基本数据类型转换自动转换int a=1.2; double b=3;结论:数据类型可以自动的从低精度高精度。高精度不能转为低精度。byte 小于大于;3、=大于等于;5、b)System.out.println(“
13、ok2“);if(a=b)System.out.println(“ok3“);请编写一个程序,该程序可以接收两个数(可以是整数,也可是小数)并判断两个数是大于?小于?还是等于?程序代码:import java.io.*;/载入 IO 流包public class Demo5public static void main(String args)try/输入流,从键盘接收数InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);/给出提示System.out.
14、println(“请输入第一个数“);/从控制台读取一行数据String a1=br.readLine();System.out.println(“请输入第二个数“);String a2=br.readLine();/把 String 转为 floatfloat num1=Float.parseFloat(a1);float num2=Float.parseFloat(a2);if(num1num2)System.out.println(“第一个大“);if(num1=num2)System.out.println(“相等“);if(num18)System.out.println(“ok1“
15、);韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)8 | 447注:笔记中所有示例都能正常通过编译b-;if(ab if(!(a打四次int lay=4;/表示有多少层for(int i=1;i3 2-2 3-1 4-0 找出空格for(int k=1;k1 2-3 3-5 4-7 找出星的规律for(int j=1;j3 2-2 3-1 4-0 找出空格for(int k=1;k1 2-3 3-5 4-7 找出星的规律for(int j=1;j猫类对象(实例)对象(实例).注意:从猫类到对象,目前有几种说法:1、创建一个对象;2、实例化一个对象;3、对类实例化.以后大家听到这些
16、说法,不要模糊。(对象就是实例,实例就是对象)java 最大的特点就是面向对象。/定义猫类public class Demo105public static void main(String args)/创建一个猫对象Cat cat1=new Cat();/Cat 是定义的一个数据类型/Cat cat1;/cat1=new Cat();/ 等同于 Cat cat1=new Cat();/访问属性的 对象名.属性名字cat1.age=3;cat1.name=“小白“;cat1.color=“白色“;/创建第二只猫Cat cat2=new Cat();cat2.age=100;韩顺平 Java 从
17、入门到精通视频( 全 94 讲详细笔记)15 | 447注:笔记中所有示例都能正常通过编译cat2.name=“小花“;cat2.color=“花色“; /java 中如何定义一个类?类名的首写字母大写可根据程序的需要定义类class Cat/下面的就是类的成员变量/属性int agr;String name;String color;Master myMaster;/引用类型,比如建个主人类class Masterint age;String name;String address;类和对象的区别和联系1、类是抽象的,概念的,代表一类事物,比如人类,猫类2、对象是具体的,实际的,代表一个具体
18、事物3、类对象的模板,对象是类的一个个体,实例类-如何定义类一个全面的类定义比较复杂,如:package 包名;class 类名 extends 父类 implements接口名成员变量;构造方法;成员方法;要透彻的掌握类,必须要了解类的构成class 类名 - 待定.成员变量;类-类的成员变量成员变量是类的一个组成部分,一般是基本数据类型,也可是引用类型。比如我们前面定韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)16 | 447注:笔记中所有示例都能正常通过编译义猫类的 int age 就是成员变量。对象-如何创建对象创建一个对象有两种方法1、先声明再创建1、对象声明:类名
19、对象名2、对象创建:对象名=new 类名()2、一步到位法类名 对象名=new 类名()对象-如何访问(使用)对象的成员变量对象名.变量名; /简单先这样理解,以后加下控制符此表达就不准确了。*对象总是存在内存中的一个小思考题Demo.105.java为了让大家加深印象,我们定义一个人类(Person)(包括名字、年龄)。用一步到位法去创建一个对象我们看看下面一段代码: System.out.printlin(b.age);Person a=new Person(); 请问:b.age 究竟是多少?a.age=10;a.name=“小明“;Person b;b=a;*对象总是存在内存中的一个小
20、思考题Demo106.java在明白对象是如何在内存中存在后,请大家再看看下面的思考题,请问会输出什么信息?Person1 a=new Person1();a.age=10;a.name=“小明“;Person1 b;b=a;System.out.println(b.name);/输出“小明”b.age=200;System.out.println(a.age);/输出 a.age 为 200*重点也是难点类-成员方法的初步介绍在某些情况下,我们要需要定义成员方法。比如人类:除了有一些属性外(成员变量表示的年龄、姓名.),我们人类还有一些行为比如:可以说话、跑步,通过学习,我们人类还可以做算术
21、题。这时就要用成员方法才能完成。现在要求对 Person 类完善:韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)17 | 447注:笔记中所有示例都能正常通过编译1、添加 speak 成员方法,输入出:我是一个好人2、添加 jisuan 成员方法,可以计算从 1+1000 的结果3、修改 jisuan 成员方法,该方法可以接收一个数 n,计算从 1+n 的结果4、添加 add 成员方法,可以计算两个数的和类-类的成员方法(成员函数)定义成员方法也叫成员函数,这里希望大家不要被两个名词搞晕了。public 返回数据类型 方法名(参数列表)语句;/方法(函数)主体1、参数列表:表示成
22、员函数输入2、数据类型(返回类型):表示成员函数输出3、函数主体:表示为了实现某一功能代码块/类的调用及方法调用Demo108.javapublic class Demo108public static void main(String args)Person p1=new Person();p1.speak();/调用 speak 方法p1.jiSuan();/调用计算方法p1.jiSuan(200);/调用可以传入参数的计算方法p1.add(12,10);/调用两个数的和int res=p1.add2(23,34);/调用两个数的和并返回值到 res 中System.out.println
23、(“res 返回值是:“+res);System.out.println(“num1+num2+num3=“+p1.add3(2,2.3f,4.5f);/返回类型一定要一致否则报错。/定义名字的几个方法:/1、驼峰法 如 myCry;2、下划线法 my_cry/方法名在有不同参数的情况下可以使用同一个方法名,即有参数和没参数的方法可以同名class Person /请注意类名首写字母应为大写如 Person 为类名int age;String name;/1、可以输出我是好人方法public void speak() /请注意方法名的首写字母应为小写如 speak 为方法名System.out
24、.println(“我是一个好人“);韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)18 | 447注:笔记中所有示例都能正常通过编译/2、可以计算 1+1000 的方法public void jiSuan()int result=0;for(int i=1;i=1000;i+)result=result+i;System.out.println(“1+1000 结果是“+result);/3、带参数的成员方法,可以输入 n 值并计算 1+npublic void jiSuan(int n)int result=0;for(int i=1;i=n;i+)result+=i;Sys
25、tem.out.println(“1+n 结果是“+result);/4、计算两个数的和public void add(int num1,int num2)int result=0; /与下面一句等同于 return num1+num2;result=num1+num2;System.out.println(“num1+num2=“+result);/5、计算两个数的和,并将结果返回给主调(调用它的)函数/注意:返回类型和返回结果的类型要一致/注意:在调用某个成员方法的时候,给出的具体数值的个数/和类型要相匹配。public int add2(int num1,int num2)return
26、num1+num2;/6、计算两个 float 数的和,并将结果返给主调函数public float add3(int num1,float num2,float num3)return num1+num2+num3;类-类的成员方法(函数)-如何理解如何理解方法这个概念,给大家举个通俗的示例:程序员调用方法:给方法必要的输入,方法返回结果。类的成员方法-声明public int test(int a);/*方法声明*/这句话的作用是声明该方法,声明的格式为:访问修饰符 数据类型 函数名(参数列表);韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)19 | 447注:笔记中所有示例
27、都能正常通过编译在给 Person 类添加 add 方法的例题中,我们看到的关键字 return,它的功能是把表达式的值返回的值返回给主调函数的方法。return 表达式;类的成员方法(函数)-特别说明1、方法的参数列表可以是多个案例:在 Person 类中编写一个成员方法,从键盘输入三个数,返回最大的那个数。参数列表可以是多个,并且数据类型可以是任意的类型 int float double char访问修饰符 返回数据类型 函数名(参数列表)语句; /函数主体2、方法可以没有返回值案例:编写一个函数,从控制台输入一个整数打印出对应的金字塔。返回类型可以是任意的数据类型(int,float,d
28、ouble,char)也可以没有返回值 void 表示没有返回值访问修饰符 返回数据类型 函数名(形参列表)语句; /函数主体类的成员方法(函数)-小练习案例:编写一个成员函数,从键盘输入一个整数(1-9),打印出对应的乘法表Demo110.java/实例键盘输入打印乘法表Demo110.javaimport java.io.*;public class Demo110public static void main(String args)Cfb jiu=new Cfb();jiu.cf();class Cfbpublic void cf()try/输入流,从键盘接收数InputStreamR
29、eader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);/给出提示System.out.println(“请输入 1-9,按 0 退出:“);/从控制台读取一行数据String a1=br.readLine();/把 String 转为 intint num1=Integer.decode(a1);韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)20 | 447注:笔记中所有示例都能正常通过编译for(int i=1;i=num1;i+)for(int j=1;j=i;
30、j+)System.out.print(i+“+j+“=“+(i*j)+“t“);System.out.println();catch(Exception e)e.printStackTrace();案例:编写函数,使给定的一个二维数组(33)转置类定义的完善在介绍了成员方法后,我们类的定义就可以完善一步:class 类名 class 类名 待定成员变量; 成员变量; 成员方法;小结:1.先设计类;2.然后根据类创建对象。小练习:1、设计计算机类,要求如下:Demo109.java属性:品牌(Brand)、颜色(Color)、cpu 型号(CPU)、内存容量(Memory)、硬盘大小(Hard
31、disk)、价格(Price)、工作状态(Work)方法:打开(Open)、关闭(Close)、休眠(Sleep)创建一个计算机对象,调用打开,关闭方法/计算机类与对象的代码import java.io.*;/加载 IO 流包public class Demo109public static void main(String args)Computer Pc=new Computer();Pc.Brand=“品牌“;Pc.Color=“颜色“;Pc.Cpu=“Cpu 型号“;Pc.Memory=“内存容量“;Pc.Hd=“硬盘容量“;Pc.Price=“价格“;Pc.Work=“工作状态“;t
32、ry/输入流,从键盘接收数InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)21 | 447注:笔记中所有示例都能正常通过编译/给出提示System.out.println(“请输入 0-9 控制机器“);/从控制台读取一行数据String a1=br.readLine();/把 String 转为 floatfloat num1=Float.parseFloat(a1);if(num1=0)
33、Pc.open();else if(num1=1)Pc.close();else if(num1=2)Pc.sleep();else if(num1=3)System.out.println(Pc.Brand);else if(num1=4)System.out.println(Pc.Color);else if(num1=5)System.out.println(Pc.Cpu);else if(num1=6)System.out.println(Pc.Memory);else if(num1=7)System.out.println(Pc.Hd);else if(num1=8)System.
34、out.println(Pc.Price);else if(num1=9)System.out.println(Pc.Work);else System.out.println(“输入错误!“);catch(Exception e) e.printStackTrace();class ComputerString Brand;String Color;String Cpu;String Memory;String Hd;String Price;String Work;public void open()System.out.println(“开机“);public void close()S
35、ystem.out.println(“关机“);public void sleep()System.out.println(“休眠“);2、 采用面向对象思想设计超级马里奥游戏人物韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)22 | 447注:笔记中所有示例都能正常通过编译-2、java 面向对象编程(1)-构造方法(函数)类的构造方法介绍什么是构造方法呢?在回答这个问题之前,我们来看一个需求:前面我们在创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在我要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名,该怎么做?你可以在定义类的时候,定义一
36、个构造方法即可。构造方法是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。它有几个特点:1、方法名和类名相同2、没有返回值3、在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化。特别说明:一个类可以定义多个不同的构造方法。/例人类构造方法Demo111.javapublic class Demo111public static void main(String args)Person p1=new Person(12,“顺平“);/给予不同的初始值,调用的构造方法不同,构造方法虽同名,但系统会根据初始值来选定构造方法。/定义一个人类class Personint
37、 age;String name;/默认构造方法public Person()/构造方法的主要用处是:初始化你的成员属性(变量)/构造方法public Person(int age,String name)System.out.println(“我是构造 1“);age=age;name=name;/构造方法 2public Person(String name)System.out.println(“我是构造 2“);韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)23 | 447注:笔记中所有示例都能正常通过编译name=name;类的默认构造方法有些同志可能会问?亲爱的老师,
38、我们在没有学习构造函数前不是也可以创建对象吗?是这样的,如果程序员没有定义构造方法,系统会自动生成一个默认构造方法。比如Person 类 Person ();当创建一个 Person 对象时 Person per1=new Person();默认的构造函数就会被自动调用。类的构造方法小结:1、构造方法名和类名相同;2、构造方法没有返回值;3、主要作用是完成对新对象的初始化;4、在创建新对象时,系统自动的调用该类的构造方法;5、一个类可以有多个构造方法;6、每个类都有一个默认的构造方法。类定义的改进在提出构造方法后,我们类的定义就应该更加完善了:class 类名 class 类名 class 类
39、名成员变量; 成员变量; 成员变量; 成员方法; 构造方法; 待定 成员方法java 面向对象编程(2)-this一个问题?请大家看一段代码:(Demo112.java)*重点*:this 是属于一个对象,不属于类的。java 虚拟机会给每个对象分配 this,代表当前对象。坦白的讲,要明白 this 不是件容易的事注意事项:this 不能在类定义的外部使用,只能在类定义的方法中使用/*this 的必要性*/public class Demo112public static void main(String args)Dog dog1=new Dog(2,“大黄“);Person p1=new
40、 Person(dog1,23,“郭德纲“);Person p2=new Person(dog1,24,“刘谦“);p1.showInfo();p1.dog.showInfo();韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)24 | 447注:笔记中所有示例都能正常通过编译/定义一个人类class Person/成员变量int age;String name;Dog dog;/引用类型public Person(Dog dog,int age,String name)/可读性不好/age=age;/name=name;this.age=age; /this.age 指 this
41、 代词指定是成员变量 agethis.name=name; /this.name 指 this 代词指定是成员变量 namethis.dog=dog;/显示人名字public void showInfo()System.out.println(“人名是:“+this.name);class Dogint age;String name;public Dog(int age,String name)this.age=age;this.name=name;/显示狗名public void showInfo()System.out.println(“狗名叫“+this.name);-类变量-提出问题
42、?提出问题的主要目的就是让大家思考解决之道。public class Demo113public static void main(String args)/* int total=0;Child ch1=new Child(3,“妞妞“);ch1.joinGame();total+;韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)25 | 447注:笔记中所有示例都能正常通过编译Child ch2=new Child(4,“小小“);ch2.joinGame();total+; */Child ch1=new Child(3,“妞妞“);ch1.joinGame();Child
43、ch2=new Child(4,“小小“);ch2.joinGame();Child ch3=new Child(5,“大大“);ch3.joinGame();System.out.println(“共有=“+Child.total);/定义小孩类class Childint age;String name;/static 公共函数,total 是静态变量,因此它可以被任何一个对象访问static int total=0; public Child(int age,String name)this.age=age;this.name=name;public void joinGame()tot
44、al+;System.out.println(“有一个小孩加入了“);-java 面向对象编程(2)-类变量、类方法什么是类变量?类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。如何定义类变量?定义语法:访问修饰符 static 数据类型 变量名;如何访问类变量?类名.类变量名 或者 对象名.类变量名/类变量的程序演示Demo114.javapublic class Demo114韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)26 | 447注:笔记中所有示例都能正常通过编译static
45、int i=1;static/该静态区域块只被执行一次i+;System.out.println(“执行一次“);public Demo114() /建立 Demo114()构造函数System.out.println(“执行二次“);i+;public static void main(String args)Demo114 t1=new Demo114(); /创建 t1 对象实例并调用 Demo114 函数System.out.println(t1.i);Demo114 t2=new Demo114();System.out.println(t2.i);-什么是类方法,为什么有类方法?类
46、方法是属于所有对象实例的,其形式如下:访问修饰符 static 数据返回类型 方法名()注意:类方法中不能访问非静态变量(类变量)。使用:类名.类方法名 或者 对象名.类方法名*重点*static 静态的方法可以访问 static 静态变量,不能访问非静态变量(类变量)非静态方法可以访问非静态变量(类变量)同时也可以访问 static 静态变量。/统计总学费的程序代码,加深 static 静态的方法由静态变量的访问Demo115.javapublic class Demo115public static void main(String args)/创建一个学生Stu stu1=new Stu(29,“aa“,340);Stu stu2=new Stu(29,“aa“,240);System.out.println(Stu.getTotalFee();/学生类class Stuint age;String name;int fee;static int totalFee;韩顺平 Java 从入门到精通视频( 全 94 讲详细笔记)27 | 4