1、Java 从入门到精通全过程1 | 451注:笔记中所有示例都能正常通过编译java 平台1、J2SE java 开发平台标准版2、J2EE java 开发平台企业版java 程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行 java 程序。不同系统上要安装对应的虚拟机才可以运行 java 程序开发步骤1、编写源文件 (.java)2、编译源文件为类文件(.class)可用 J2SE 或 J2EE 编译3、在虚拟机上运行注释/单行注释/* */多行注释java 内容介绍java 编程可以分成三个方向:1、java se (j2se)桌面开发 java 中的基础中的基础2、jav
2、a ee (j2ee)web 开发3、java me (j2me)手机开发java se 课程介绍java 面向对象编程(基础)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
3、 启动 绿色计划Java 从入门到精通全过程2 | 451注:笔记中所有示例都能正常通过编译1992 创建 oak 语言java1994 gosling 参加硅谷大会演示 java 功能,震惊世界1995 sun 正式发布 java 第一个版本,目前最新是 jdk7.0java 开发工具记事本、(jcreator、jbuilder 退出舞台了)、netbean、eclipse如何选择开发工具先选择记事本,对 java 有一定了解后再使用 eclipse 高级开发工具为什么呢?1、更深刻的理解 java 技术,培养代码感2、有利于公司面试java 语言的特点1、java 语言是简单的2、java
4、 语言是面向对象的3、java 语言是跨平台(操作系统)的即一次编译,到处运行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添加环境变量即可w
5、indows 下配置 jdk在计算机属性-高级设置-环境变量-添加 PATH 将 JDK 所在路径指定即可。多个环境变量设置时需要用;号进行隔开1、编写第一个 hello.java/注释 (解释) 作者:/功能:在控制台显示“hello“/日期:2013.11.28/public:表示这个类是公共的,一个 java 文件中只能有一个 public 类/class:表示这是一个类/hello:类名(公共类的类名必须和文件名一致)public class helloJava 从入门到精通全过程3 | 451注:笔记中所有示例都能正常通过编译/一个主函数,相当于是程序的入口public static
6、 void main(String args)/执行语句/System:是一个包/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 虚拟机中执行对
7、 hello.java 程序进行改过使之变为一个简单的加法运算程序/注释 (解释) 作者:/功能:在控制台显示“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=
8、10;/定义一个变量,变量名 a,它的值 10int b=20;/定义一个变量,变量名 b,它的值 20int result=a+b;/定义一个叫 result 变量将变量 ab 相加的值赋值给 result/输出结果System.out.println(“结果是“+result);-为什么有变量不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位。java 中的基本数据类型的定义与 c/c+中大体一致。Java 从入门到精通全过程4 | 451注:笔记中所有示例都能正常通过编译public class Testpublic static void main(String args
9、)int a=1;/定义一个整形变量,取名 a,并赋初值 1int b=3;/定义一个整形变量,取名 b,并赋初值 3b=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; /给变量
11、spBool 定义为 boolean 型并赋值为真字符类型可以表示 单个字符,字符类型是 char。char 是两个字节(可以存放汉字)多个字符我们称为字符串,在 java 中 String 这种数据类型表示,但是 String 不是基本数据类型,而是类,类是复合数据类型。结论:在 java 中,对 char 进行运算的时候,直接当做 ascii 码对应的整数对待。思考:int test1=a+b; 输出值 195char test2=a+b; 输出值?char test3=中; 输出值 195Java 从入门到精通全过程5 | 451注:笔记中所有示例都能正常通过编译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(“ok2“);i
13、f(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.println
14、(“请输入第一个数“);/从控制台读取一行数据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“);b-;if
15、(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、对类实例化.以后大家听到这些说法,不要模糊。(对象就是实例,实例就是对象)java 最大的特点就是面向对象。/定义猫类public class Dem
16、o105public 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();Java 从入门到精通全过程15 | 451注:笔记中所有示例都能正常通过编译cat2.age=100;cat2.name=“小花“;cat2.color=“花色“;
17、/java 中如何定义一个类?类名的首写字母大写可根据程序的需要定义类class Cat/下面的就是类的成员变量/属性int agr;String name;String color;Master myMaster;/引用类型,比如建个主人类class Masterint age;String name;String address;类和对象的区别和联系1、类是抽象的,概念的,代表一类事物,比如人类,猫类2、对象是具体的,实际的,代表一个具体事物3、类对象的模板,对象是类的一个个体,实例类-如何定义类一个全面的类定义比较复杂,如:package 包名;class 类名 extends 父类 i
18、mplements接口名成员变量;构造方法;成员方法;要透彻的掌握类,必须要了解类的构成class 类名 - 待定.成员变量;类-类的成员变量Java 从入门到精通全过程16 | 451注:笔记中所有示例都能正常通过编译成员变量是类的一个组成部分,一般是基本数据类型,也可是引用类型。比如我们前面定义猫类的 int age 就是成员变量。对象-如何创建对象创建一个对象有两种方法1、先声明再创建1、对象声明:类名 对象名2、对象创建:对象名=new 类名()2、一步到位法类名 对象名=new 类名()对象-如何访问(使用)对象的成员变量对象名.变量名; /简单先这样理解,以后加下控制符此表达就不准
19、确了。*对象总是存在内存中的一个小思考题Demo.105.java为了让大家加深印象,我们定义一个人类(Person)(包括名字、年龄)。用一步到位法去创建一个对象我们看看下面一段代码: System.out.printlin(b.age);Person a=new Person(); 请问:b.age 究竟是多少?a.age=10;a.name=“小明“;Person b;b=a;*对象总是存在内存中的一个小思考题Demo106.java在明白对象是如何在内存中存在后,请大家再看看下面的思考题,请问会输出什么信息?Person1 a=new Person1();a.age=10;a.name
20、=“小明“;Person1 b;b=a;System.out.println(b.name);/输出“小明”b.age=200;System.out.println(a.age);/输出 a.age 为 200*重点也是难点类-成员方法的初步介绍在某些情况下,我们要需要定义成员方法。比如人类:除了有一些属性外(成员变量表示的年龄、姓名.),我们人类还有一些行为比如:可以说话、跑步,通过学习,我们人类Java 从入门到精通全过程17 | 451注:笔记中所有示例都能正常通过编译还可以做算术题。这时就要用成员方法才能完成。现在要求对 Person 类完善:1、添加 speak 成员方法,输入出:我
21、是一个好人2、添加 jisuan 成员方法,可以计算从 1+1000 的结果3、修改 jisuan 成员方法,该方法可以接收一个数 n,计算从 1+n 的结果4、添加 add 成员方法,可以计算两个数的和类-类的成员方法(成员函数)定义成员方法也叫成员函数,这里希望大家不要被两个名词搞晕了。public 返回数据类型 方法名(参数列表)语句;/方法(函数)主体1、参数列表:表示成员函数输入2、数据类型(返回类型):表示成员函数输出3、函数主体:表示为了实现某一功能代码块/类的调用及方法调用Demo108.javapublic class Demo108public static void ma
22、in(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(“res 返回值是:“+res);System.out.println(“num1+num2+num3=“+p1.add3(2,2.3f,4.5f);/返回类型一定要一致否则报错。/定义名字的几个方法:/1、驼峰法
23、如 myCry;2、下划线法 my_cry/方法名在有不同参数的情况下可以使用同一个方法名,即有参数和没参数的方法可以同名class Person /请注意类名首写字母应为大写如 Person 为类名 int age;String name;/1、可以输出我是好人方法public void speak() /请注意方法名的首写字母应为小写如 speak 为方法名System.out.println(“我是一个好人“);Java 从入门到精通全过程18 | 451注:笔记中所有示例都能正常通过编译/2、可以计算 1+1000 的方法public void jiSuan()int result=0
24、;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;System.out.println(“1+n 结果是“+result);/4、计算两个数的和public void add(int num1,int num2)int result=0; /与下面一句等同于 return num1+num2;resul
25、t=num1+num2;System.out.println(“num1+num2=“+result);/5、计算两个数的和,并将结果返回给主调(调用它的)函数/注意:返回类型和返回结果的类型要一致/注意:在调用某个成员方法的时候,给出的具体数值的个数/和类型要相匹配。public int add2(int num1,int num2)return num1+num2;/6、计算两个 float 数的和,并将结果返给主调函数public float add3(int num1,float num2,float num3)return num1+num2+num3;类-类的成员方法(函数)-如何
26、理解如何理解方法这个概念,给大家举个通俗的示例:程序员调用方法:给方法必要的输入,方法返回结果。类的成员方法-声明public int test(int a);/*方法声明*/这句话的作用是声明该方法,声明的格式为:Java 从入门到精通全过程19 | 451注:笔记中所有示例都能正常通过编译访问修饰符 数据类型 函数名(参数列表);在给 Person 类添加 add 方法的例题中,我们看到的关键字 return,它的功能是把表达式的值返回的值返回给主调函数的方法。return 表达式;类的成员方法(函数)-特别说明1、方法的参数列表可以是多个案例:在 Person 类中编写一个成员方法,从键
27、盘输入三个数,返回最大的那个数。参数列表可以是多个,并且数据类型可以是任意的类型 int float double char访问修饰符 返回数据类型 函数名(参数列表)语句; /函数主体2、方法可以没有返回值案例:编写一个函数,从控制台输入一个整数打印出对应的金字塔。返回类型可以是任意的数据类型(int,float,double,char)也可以没有返回值 void 表示没有返回值访问修饰符 返回数据类型 函数名(形参列表)语句; /函数主体类的成员方法(函数)-小练习案例:编写一个成员函数,从键盘输入一个整数(1-9),打印出对应的乘法表Demo110.java/实例键盘输入打印乘法表Dem
28、o110.javaimport java.io.*;public class Demo110public static void main(String args)Cfb jiu=new Cfb();jiu.cf();class Cfbpublic void cf()try/输入流,从键盘接收数InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);/给出提示System.out.println(“请输入 1-9,按 0 退出:“);/从控制台读取一行数据S
29、tring a1=br.readLine();/把 String 转为 intJava 从入门到精通全过程20 | 451注:笔记中所有示例都能正常通过编译int num1=Integer.decode(a1);for(int i=1;i=num1;i+)for(int j=1;j=i;j+)System.out.print(i+“+j+“=“+(i*j)+“t“);System.out.println();catch(Exception e)e.printStackTrace();案例:编写函数,使给定的一个二维数组(33)转置类定义的完善在介绍了成员方法后,我们类的定义就可以完善一步:cl
30、ass 类名 class 类名 待定成员变量; 成员变量; 成员方法;小结:1.先设计类;2.然后根据类创建对象。小练习:1、设计计算机类,要求如下:Demo109.java属性:品牌(Brand)、颜色(Color)、cpu 型号(CPU)、内存容量(Memory)、硬盘大小(Harddisk)、价格(Price)、工作状态(Work)方法:打开(Open)、关闭(Close)、休眠(Sleep)创建一个计算机对象,调用打开,关闭方法/计算机类与对象的代码import java.io.*;/加载 IO 流包public class Demo109public static void main
31、(String args)Computer Pc=new Computer();Pc.Brand=“品牌“;Pc.Color=“颜色“;Pc.Cpu=“Cpu 型号“;Pc.Memory=“内存容量“;Pc.Hd=“硬盘容量“;Pc.Price=“价格“;Pc.Work=“工作状态“;try/输入流,从键盘接收数InputStreamReader isr=new InputStreamReader(System.in);Java 从入门到精通全过程21 | 451注:笔记中所有示例都能正常通过编译BufferedReader br=new BufferedReader(isr);/给出提示Sy
32、stem.out.println(“请输入 0-9 控制机器“);/从控制台读取一行数据String a1=br.readLine();/把 String 转为 floatfloat num1=Float.parseFloat(a1);if(num1=0)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.
33、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.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 C
34、olor;String Cpu;String Memory;String Hd;String Price;String Work;public void open()System.out.println(“开机“);public void close()System.out.println(“关机“);public void sleep()System.out.println(“休眠“);Java 从入门到精通全过程22 | 451注:笔记中所有示例都能正常通过编译2、 采用面向对象思想设计超级马里奥游戏人物-2、java 面向对象编程(1)-构造方法(函数)类的构造方法介绍什么是构造方法呢?
35、在回答这个问题之前,我们来看一个需求:前面我们在创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在我要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名,该怎么做?你可以在定义类的时候,定义一个构造方法即可。构造方法是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。它有几个特点:1、方法名和类名相同2、没有返回值3、在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化。特别说明:一个类可以定义多个不同的构造方法。/例人类构造方法Demo111.javapublic class Demo111public static void ma
36、in(String args)Person p1=new Person(12,“顺平“);/给予不同的初始值,调用的构造方法不同,构造方法虽同名,但系统会根据初始值来选定构造方法。/定义一个人类class Personint age;String name;/默认构造方法public Person()/构造方法的主要用处是:初始化你的成员属性(变量)/构造方法public Person(int age,String name)System.out.println(“我是构造 1“);age=age;name=name;/构造方法 2public Person(String name)Java
37、从入门到精通全过程23 | 451注:笔记中所有示例都能正常通过编译System.out.println(“我是构造 2“);name=name;类的默认构造方法有些同志可能会问?亲爱的老师,我们在没有学习构造函数前不是也可以创建对象吗?是这样的,如果程序员没有定义构造方法,系统会自动生成一个默认构造方法。比如Person 类 Person ();当创建一个 Person 对象时 Person per1=new Person();默认的构造函数就会被自动调用。类的构造方法小结:1、构造方法名和类名相同;2、构造方法没有返回值;3、主要作用是完成对新对象的初始化;4、在创建新对象时,系统自动的调
38、用该类的构造方法;5、一个类可以有多个构造方法;6、每个类都有一个默认的构造方法。类定义的改进在提出构造方法后,我们类的定义就应该更加完善了:class 类名 class 类名 class 类名成员变量; 成员变量; 成员变量; 成员方法; 构造方法; 待定 成员方法java 面向对象编程(2)-this一个问题?请大家看一段代码:(Demo112.java)*重点*:this 是属于一个对象,不属于类的。java 虚拟机会给每个对象分配 this,代表当前对象。坦白的讲,要明白 this 不是件容易的事注意事项:this 不能在类定义的外部使用,只能在类定义的方法中使用/*this 的必要性
39、*/public class Demo112public static void main(String args)Dog dog1=new Dog(2,“大黄“);Person p1=new Person(dog1,23,“郭德纲“);Person p2=new Person(dog1,24,“刘谦“);p1.showInfo();p1.dog.showInfo();Java 从入门到精通全过程24 | 451注:笔记中所有示例都能正常通过编译/定义一个人类class Person/成员变量int age;String name;Dog dog;/引用类型public Person(Dog
40、dog,int age,String name)/可读性不好/age=age;/name=name;this.age=age; /this.age 指 this 代词指定是成员变量 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.na
41、me=name;/显示狗名public void showInfo()System.out.println(“狗名叫“+this.name);-类变量-提出问题?提出问题的主要目的就是让大家思考解决之道。public class Demo113public static void main(String args)/* int total=0;Child ch1=new Child(3,“妞妞“);ch1.joinGame();Java 从入门到精通全过程25 | 451注:笔记中所有示例都能正常通过编译total+;Child ch2=new Child(4,“小小“);ch2.joinGa
42、me();total+; */Child ch1=new Child(3,“妞妞“);ch1.joinGame();Child 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,
43、String name)this.age=age;this.name=name;public void joinGame()total+;System.out.println(“有一个小孩加入了“);-java 面向对象编程(2)-类变量、类方法什么是类变量?类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。如何定义类变量?定义语法:访问修饰符 static 数据类型 变量名;如何访问类变量?类名.类变量名 或者 对象名.类变量名/类变量的程序演示Demo114.javaJava 从入门到精通全过程26
44、| 451注:笔记中所有示例都能正常通过编译public class Demo114static 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 Dem
45、o114();System.out.println(t2.i);-什么是类方法,为什么有类方法?类方法是属于所有对象实例的,其形式如下:访问修饰符 static 数据返回类型 方法名()注意:类方法中不能访问非静态变量(类变量)。使用:类名.类方法名 或者 对象名.类方法名*重点*static 静态的方法可以访问 static 静态变量,不能访问非静态变量(类变量)非静态方法可以访问非静态变量(类变量)同时也可以访问 static 静态变量。/统计总学费的程序代码,加深 static 静态的方法由静态变量的访问Demo115.javapublic class Demo115public sta
46、tic 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;Java 从入门到精通全过程27 | 451注:笔记中所有示例都能正常通过编译static int totalFee;public Stu(int age,String name,int fee)this.age=age;this.name=name;totalFee+=fee;/返回总学费这是一个类方法(静态方法)/java 中规则:类变量原则上用类方法去访问或操作public static int getTotalFee()return totalFee;类变量小结1、什么时候需要用类变量案例Demo115.java:定义学生类,统计学生共交多少钱?用类变量,属于公共的属性2、类变