最新java学习笔记(全).doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datejava学习笔记(全)java学习笔记(全)JAVA学习笔记_全java内容介绍java编程可以分成三个方向:1、java se (j2se)桌面开发 java中的基础中的基础2、java ee (j2ee)web开发3、java me (j2me)手机开发java se课程介绍java面向对象编程(基础)java图开界面开发java数据库编程java文件io流编程java网络编程java多线程编程java ee基础1java面向对象编程-数据库编程->java sejava 基础2html-css-javascript->div+cssjava ee中级部分Servlet-Jsp->mvc模式java ee高级部分Struts-Ejb-Hibernate-Spring-Ajax(ext,dw2)->ssh框架java之父gosling1990 sun启动 绿色计划1992 创建oak语言->java1994 gosling参加硅谷大会演示java功能,震惊世界1995 sun正式发布java第一个版本,目前最新是jdk7.0java开发工具记事本、(jcreator、jbuilder退出舞台了)、netbean、eclipse如何选择开发工具先选择记事本,对java有一定了解后再使用eclipse高级开发工具为什么呢?1、更深刻的理解java技术,培养代码感2、有利于公司面试java语言的特点1、java语言是简单的2、java语言是面向对象的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 添加环境变量即可windows下配置jdk在计算机属性-高级设置-环境变量-添加PATH将JDK所在路径指定即可。多个环境变量设置时需要用;号进行隔开1、编写第一个hello.java/注释 (解释) 作者:/功能:在控制台显示"hello"/日期:2013.11.28/public:表示这个类是公共的,一个java文件中只能有一个public类/class:表示这是一个类/hello:类名(公共类的类名必须和文件名一致)public class hello /一个主函数,相当于是程序的入口 public static 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虚拟机中执行对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=10;/定义一个变量,变量名a,它的值10int b=20;/定义一个变量,变量名b,它的值20 int 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,并赋初值1 int b=3;/定义一个整形变量,取名b,并赋初值3 b=89;/给变量b赋89 System.out.println(a);/输出语句,把变量a的值输出 System.out.println(b);/把变量b的值输出-java基本语法-基本数据类型java基本数据类型 四大类型整数类型、小数(浮点)类型、布尔类型、字符类型整数类型可以表示一个整数,常用的整数类型有:byte,short,int,long主要区别是 数据大小范围,请大家看一个小案例。byte 占用内存 一个字节 范围:-128至127short 占用内存 两个字节 范围:-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定义为boolean型并赋值为真字符类型可以表示 单个字符,字符类型是char。char是两个字节(可以存放汉字)多个字符我们称为字符串,在java中String这种数据类型表示,但是String不是基本数据类型,而是类,类是复合数据类型。结论:在java中,对char进行运算的时候,直接当做ascii码对应的整数对待。思考:int test1='a'+'b' 输出值195 char test2='a'+'b' 输出值? char test3='中' 输出值195java基本语法-定义变量,初始化,赋值定义变量1、什么是定义变量?int a; 这就是定义了一个变量,变量名是afloat haha;这也定义了一个变量,表示一个float类型的小数,变量名是haha初始化变量在定义变量的时候,就给值int a=45;这就是初始化变量a给变量赋值比如你先定义了变量:int tt;然后再给值tt=780; ->这就是给变量赋值-java基本语法-基本数据类型转换自动转换int a=1.2; double b=3;结论:数据类型可以自动的从低精度->高精度。高精度不能转为低精度。byte小于<short小于<int小于<long小于<float小于<double在java中的小数默认是double数据类型float赋值时要在值后加flong赋值时要在值后加l强制转换如何把高精度转成低精度?int a=(int)1.2;练习int a=1; int a=1; double b=4.5; double b=4.5; a=b; b=a; 报错 成功计算过程中的转换int a=3;int b=a+3.4;结论:当一个整数和一个double运算的时候,运算结果会向高精度转换java 基本语法-运算符java中常用的算术运算符是:+加、-减、*乘、/除、%取模其实%运算可以得到两个数的余数。算术运算符:+自加、-自减。这两个运算符比较特殊,请大家思考一下:int a=90;a+; 等同于(a=a+1)这时a等于? 91int b=89;b-; 等同于(b=b-1)这时b等于? 88int a=56;int b=a+; System.out.println(b); 56System.out.println(a); 57*int b=+a;相当于a=a+1再将b=a; int b=a+;相当于b=a再将a=a+1。-算术运算符:+=左加、-=左减、/=左除、%=左取模请大家看看几个案例,就明白了:int a=90;a+=90; (相当于a=a+90)请问,a现在等于多少? 180float b=89.7f;b+=a; (相当于b=b+a)请问,b现在等于多少? 269.7int a=56;int b=90;a-=34;b%=a; (相当于a=a-34,b=b%a)System.out.println(b); 2System.out.println(a); 22-运算符关系运算符1、=等于;2、>大于;3、<小于;4、>=大于等于;5、<=小于等于;6、!=不等于int a=90;int b=90;if(a=b)System.out.println("ok1");b-;if(a>b)System.out.println("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.println("请输入第一个数");/从控制台读取一行数据String a1=br.readLine();System.out.println("请输入第二个数");String a2=br.readLine();/把String转为floatfloat num1=Float.parseFloat(a1);float num2=Float.parseFloat(a2);if(num1>num2)System.out.println("第一个大");if(num1=num2)System.out.println("相等");if(num1<num2)System.out.println("第二个大");catch(Exception e) e.printStackTrace();-运算符-逻辑运算符用于判断逻辑关系的运算符1、&&与;2、|或;3、!非&&与的运算关系,真真为真,其它都为假。|或的运算关系,假假为假,其它都为真。!非的运算关系,真取假,假取真请大家看个案例,请问输出什么:int a=90;int b=90;if(a=b | a>8)System.out.println("ok1");b-;if(a>b && a>45)System.out.println("ok2");if(!(a<=b)System.out.println("ok3");java基本语法-三大流程控制顺序控制听其名而知其意,让程序可以顺序的执行。请大家看个案例demo11.java:int a=7;System.out.println("a="+a);System.out.println("hello!");a+;System.out.println("a="+a);System.out.println("0(_)0");a+;System.out.println("a="+a);分支控制让程序有选择的执行,分支控制有三种:1、 单分支;2、双分支;3、多分支a1、单分支语法:if(条件表达式)语句;2、双分支语法:if(条件表达式)语句;else语句;3.1、多分支语法:if(条件表达式)语句;else if(条件表达式)语句;else if(条件表达式)语句;else语句;3.2、多分支语法:switch(条件表达式) /*条件表达式数据类型,就和case常量表达式一致,否则就会报错。case 常量1:语句1; /语句1至break中相当于可以加入相应程序代码break; /break,表示跳出switch语句case 常量2:语句1;break;.case 常量n:语句n;break;default:语句;break;*:switch中的可用数据类型主要是:允许byte,short,int,char,enum等1、单分支控制作业:请大家看个案例demo22.java:编写一个程序,可以输入人的年龄,如果该同学的年龄大于18岁,则输出“你年龄大于18,要为自己的行为负责!”2、双分支控制作业:请大家看个案例demo33.java:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18岁,要对自己的行为负责!”否则,输出“你的年龄不大这次放过你了”3、多分支控制作业:请大家看个案例demo44.java编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行业负责,送入监狱”。如果该同志的年龄大于10岁并且小于等于18,则输出“你的年龄也不小了,把你送少管所”。其它情况,则输出“小孩子,下次注意”。4、多分支控制作业:请大家看个案例demo55.java请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,ga表示星期一,b表示星期二.根据用户的输入显示相应的信息,要求使用switch语句完成。5、多分支控制作业:请大家看个案例demo66.java对比switch与if语句在执行分支语句的区别。*switch分支语句不支持判断类型即boolean类型,switch只支持byte,short,int,char,enum等数据类型-循环控制听其名而知其意,就是让你的代码可以循环的执行。循环控制有三种1、for循环 语法:for(循环初值;循环条件;步长)语句; /循环体2、while循环 语法:while(循环条件)语句; /循环体特别说明:while循环是先判断在执行语句。3、do while循环 语法:do语句; /循环体while(循环条件);特别说明:do while循环是先执行,再判断。请大家看个案例demo77-88-99.java:编写一个程序,可以打印10句“你好,我是刘德华同志!”。请大家想想怎么做?1、for循环for (int a=0;a<10;a+)System.out.println("你好,我是刘德华同志!");2、while循环int i=0;while(i<10)System.out.println("你好,我是刘德华同志!");i+;3、do while循环int i=0;doSystem.out.println("你好,我是刘德华同志!");i+;while(i<10)请编写一个程序,可以接收一个整数,表示层数,打印出金字塔一半。demo100.java*把一个复杂的问是先拆解成简单问题/三角形Demo100.javapublic class Demo100public static void main(String args)/死去活来法->打四次int lay=4;/表示有多少层for(int i=1;i<=lay;i+)/打印*for(int j=1;j<=i;j+)System.out.print("*");System.out.println();/换行-/金字塔Demo101.javapublic class Demo101public static void main(String args)int lay=10;/表示有多少层for(int i=1;i<=lay;i+)/找出规律/1->3 2->2 3->1 4->0找出空格for(int k=1;k<=lay-i;k+)System.out.print(" ");/打印*/1->1 2->3 3->5 4->7找出星的规律for(int j=1;j<=(i-1)*2+1;j+)System.out.print("*");System.out.println();/换行-/镂空金字塔Demo102.javapublic class Demo102public static void main(String args)int lay=10;/表示有多少层for(int i=1;i<=lay;i+)/找出规律/1->3 2->2 3->1 4->0找出空格for(int k=1;k<=lay-i;k+)System.out.print(" ");/打印*/1->1 2->3 3->5 4->7找出星的规律for(int j=1;j<=(i-1)*2+1;j+)/判断该层是否是顶层或者是底层if(i=1|i=lay)System.out.print("*");else/如果是第一个*if(j=1|j=(i-1)*2+1)System.out.print("*");elseSystem.out.print(" ");System.out.println();/换行-/空心菱形Demo103.javapublic class Demo103public static void main(String args)int lay=4;/菱形上半部行数for(int i=1;i<=lay-1;i+) /判断循环上半部分for(int k=1;k<=lay-i;k+) /找行内*号前输出空格System.out.print(" ");for(int j=1;j<=(i-1)*2+1;j+) /找行内输出星的位置if(j=1|j=(i-1)*2+1) /判断行最小长度和最大长度,并在最小长度和最大长度上输出*号,行内输入出空格。System.out.print("*");elseSystem.out.print(" "); System.out.println(); /换行for(int i=1;i<=lay;i+) /判断循环菱形下半部分for(int k=1;k<=i-1;k+) /判断循环找*号前要输出空格处System.out.print(" ");for(int j=1;j<=(lay-i)*2+1;j+) /判断循环行长度if(j=1|j=(lay-i)*2+1) /判断行最小长度和最大长度,并在最小长度和最大长度上输出*号,行内输入出空格。System.out.print("*");elseSystem.out.print(" "); System.out.println();/输出换行-/实心菱形Demo104.javapublic class Demo104public static void main(String args)int lay=4;/菱形上半部行数for(int i=1;i<=lay-1;i+) /判断循环上半部分for(int k=1;k<=lay-i;k+) /找行内*号前输出空格System.out.print(" ");for(int j=1;j<=(i-1)*2+1;j+) /找行内输出星的位置System.out.print("*");System.out.println(); /换行for(int i=1;i<=lay;i+) /判断循环菱形下半部分for(int k=1;k<=i-1;k+) /判断循环找*号前要输出空格处System.out.print(" ");for(int j=1;j<=(lay-i)*2+1;j+) /判断循环行长度System.out.print("*");System.out.println();/输出换行-1、java面向对象编程(1)-类与对象一个问题?Demo107.java张老太养了两只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年100岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示张老太没有这只猫猫。/用前面学习过的知识写出代码public class Demo107public static void main(String args)int a=49;/输入的名字49,50int cat1age=3; /第一只猫String cat1name="小白"String cat1color="白色"int cat2age=100; /第二只猫String cat2name="小花"String cat2color="花色"switch(a)case '1':System.out.println(cat1age+cat1color);break;case '2':System.out.println(cat2age+cat2color);break;default:System.out.println("张老太没有这只猫!");java语言是面向对象的计算机语言的发展向接近人的思维方式演变汇编语言 面向机器c语言 面向过程java语言 面向对象类和对象的关系把猫的特性提取出来->猫类->对象(实例) ->对象(实例) ->.注意:从猫类到对象,目前有几种说法:1、创建一个对象;2、实例化一个对象;3、对类实例化.以后大家听到这些说法,不要模糊。(对象就是实例,实例就是对象)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;cat2.name="小花"cat2.color="花色" /java中如何定义一个类?类名的首写字母大写可根据程序的需要定义类class Cat/下面的就是类的成员变量/属性int agr;String name;String color;Master myMaster;/引用类型,比如建个主人类class Masterint age;String name;String address;类和对象的区别和联系1、类是抽象的,概念的,代表一类事物,比如人类,猫类.2、对象是具体的,实际的,代表一个具体事物3、类对象的模板,对象是类的一个个体,实例类-如何定义类一个全面的类定义比较复杂,如:package 包名;class 类名 extends 父类 implements接口名 成员变量; 构造方法; 成员方法;要透彻的掌握类,必须要了解类的构成class 类名 -> 待定. 成员变量;类-类的成员变量成员变量是类的一个组成部分,一般是基本数据类型,也可是引用类型。比如我们前面定义猫类的int age 就是成员变量。对象-如何创建对象创建一个对象有两种方法1、先声明再创建 1、对象声明:类名 对象名 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;*对象总是存在内存中的一个小思考题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*重点也是难点类-成员方法的初步介绍在某些情况下,我们要需要定义成员方法。比如人类:除了有一些属性外(成员变量表示的年龄、姓名.),我们人类还有一些行为比如:可以说话、跑步.,通过学习,我们人类还可以做算术题。这时就要用成员方法才能完成。现在要求对Person类完善:1、添加speak成员方法,输入出:我是一个好人2、添加jisuan成员方法,可以计算从1+.+1000的结果3、修改jisuan成员方法,该方法可以接收一个数n,计算从1+.+n的结果4、添加add成员方法,可以计算两个数的和类-类的成员方法(成员函数)定义成员方法也叫成员函数,这里希望大家不要被两个名词搞晕了。public 返回数据类型 方法名(参数列表)语句;/方法(函数)主体1、参数列表:表示成员函数输入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("res返回值是:"+res);System.out.println("num1+num2+num3="+p1.add3(2,2.3f,4.5f);/返回类型一定要一致否则报错。/定义名字的几个方法:/1、驼峰法 如myCry;2、下划线法my_cry/方法名在有不同参数的情况下可以使用同一个方法名,即有参数和没参数的方法可以同名class Person /请注意类名首写字母