




免费预览已结束,剩余31页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
易途企业级java培训 Day01 Day02Java到底有哪些优势?1.跨平台(平台=OS) 可移植性在不同的操作系统之上可以不用做任何代码的修改直接使用a) 字节码文件:字节码文件不包括任何内存布局信息 与操作系统和硬件毫无关系 (Java的内存分布是在运行的时候才动态分配的)b) JVM:真正解释字节码文件内容并且和操作系统交互的部分 Sun(Oracle)已经给每一款操作系统都写好了现成的JVMJVM组成部分: 类加载器 ClassLoader字节码校验器 解释执行器 (翻译)逐行的解释执行代码2.安全 健壮3.面向对象面向过程:程序:函数+变量 (算法+数据结构)面向对象:如:SmallTalk程序:对象和对象相互之间的“通讯”对象:属性和方法 类: 创建对象的模板 具有相同特征的一类事物的高度抽象集合概念对象是类的实例化,类是对象的抽象化。引用 4.动态更新5.简单!没有指针和相关的内存操作 new内存操作gc内存回收清理 Java中的回收机制:零引用回收问题:System.gc();Runtime.getRuntime().gc();调用gc的下一行是否回收?不一定6.免费 开源 搭建Java开发平台1.JDK (JavaSDK java开发工具包) SDK(软件开发工具包)JDK安装JDK 1.5 5.0 猛虎JDK 1.6 6.0 野马JDK 1.7 7.0 海豚JDK JRE JVMJDK Java开发工具包JRE Java运行环境JVM Java虚拟机JDK = JRE + 常用工具JRE = JVM + 核心类库JVM = 三部分2.设置环境变量我的电脑-属性-高级-环境变量为了使开发过程变得更加简单快捷(问题:搭载Java开发平台最少设置几个环境变量?零个。为了方便,不是必要。)环境变量名字给谁用做什么用PATH操作系统更快的找到程序CLASSPATHJVM(类加载器)找到字节码文件JAVA_HOME其他Java程序找到JDKa) PATH就是为了在任何一个目录下都可以直接访问bin目录下的工具(命令)C:Program FilesJavajdk1.6.0_06binb) CLASSPATH默认值: . (当前目录)c) JAVA_HOME 设置到JDK安装目录下JAVA_HOME:JDK安装目录下CLASSPATH:.PATH:%JAVA_HOME%bin*环境变量名字最好全部大写*在CMD设置环境变量时=左右两边不要加空格*在CMD中定义任意程序环境变量:如:set PATH=E:TTPlayer同时定义两个环境变量中间加分号,或者Set PATH=%PATH%;E:TTPlayer分号后面不能加空格3.Java运行过程:编译期:Java源文件.java编译为字节码文件.class运行期:JVM -OS硬件编写代码HelloWorld如何编译java程序javac 源文件的名字.java如何运行java程序java 类名(没有扩展名)HelloWorld.java代码:public class HelloWorldpublic static void main(String args)System.out.println(Hello!);public修饰符 modifier static修饰符 静态(不用通过对象调用)void方法返回值(表示这个方法不需要返回值)main标识符标识符 Identifier1.必须是英文 _ $ 中文开头2.不能使用有特殊意义的名字(关键字)类名(接口名):每个单词首字母大写属性名和方法名:首字母小写,之后每个单词首字母大写包名:全部小写The most common relationships between classes are Dependence (“usesa”) Aggregation (“hasa”) Inheritance (“isa”)类成员:类可以拥有三种成员:字段:它们是类及其对象相关联的数据变量,保存着类或者对象的状态。方法:它们包含类的可执行代码并定义了对象的行为嵌套类(nested class)与嵌套接口(nested interface):它们是在其他的类或接口声明的内部声明的类与接口。类修饰符:注解(annotation)public :任何人都可以声明对这种类的对象的引用,或者访问这种类的公共成员。abstract:抽象类,被认为是不完整的,所以我们不能创建抽象类的实例。通常这是因为抽象类包含abstract方法,这些方法必须在子类中实现。final:final类不允许拥有子类。类不能既是final的又是abstract的。严格浮点(strict floating point): 声明为strictfp的类要求类中的所有浮点运算都是精确运算Java当中的包(对应操作系统当中的目录)1.区分不同的命名空间2.对多个.class文件进行分类的归类编译语句:javac -d . HelloWorld.java-d 自动创建源文件当中指定的包结构. 在当前目录下创建目录结构运行语句: java 包名.类名通过包名和类名来唯一确认一个类打包语句:package导包语句:import例:打包,源文件Student.java放在桌面,为了能够运行,定义主方法mainpackage iii.ii;public class Studentpublic static void main(String args)System.out.println(Hello!);编译:打开CMD,输入“cd 桌面”转到当前目录,编译语句: javac d . Student.java运行:java iii.ii.Student(通过包名+类名唯一确定一个类)例:导包,先写一个打包文件:package iii.ii;public class Studentpublic static void SayHello()System.out.println(Hello!);编译:javac d . Student.java然后写导包文件:import iii.ii.Student;public class Hellopublic static void main(String args)Student.SayHello();编译:javac Hello.java运行:java Hello生成帮助文档的常用工具 javadoc 语句:javadoc -d doc 源文件的名字.javaJava注释:单行注释/多行注释/* */文档注释/* */生成jar包jar包就是java当中可执行的压缩归档文件1.可执行2.压缩3.归档 一个java程序可能涉及到很多个.class 把它们都归纳在一起 变成一个文件生成jar包语句:jar cvf 名字.jar 要放进压缩文件里的文件c 创建新的归档文件v 标准输出设备显示详细列表信息f 指定归档文件的名字生成可执行Jar包具体步骤:1 写.java文件如,写一个无限弹出计算器的代码public class Testpublic static void main (String args)throws Exceptionwhile(true) Runtime.getRuntime().exec(calc);2 编译.java生成.classjavac Test.java3 将class文件打到jar包当中jar cvf name.jar Test.class4 修改jar当中的清单文件,在第三行加入Main-Class: Test注意:Test前面有空格(终止程序的方法:在CMD中输入tskill javaw)变量编程语言当中肯定要定义很多很多的变量来存储数据变量分类:1.定义在类体当中的变量成员变量 实例变量public class HelloWorldint i =100;/成员变量 属性 HelloWorld类型的对象都有一份的属性public static void main(String args)System.out.println(i);组成类的对象的属性依靠对象来存在的 它是对象存储空间当中的一部分实例变量使用前不用初始化2.定义在方法体中的变量局部变量在自己所在的方法体当中可以使用 出方法体 消亡局部变量使用之前一定要初始化*局部变量和成员变量是可以重名的!在局部变量所在的方法体中直接出现变量名将代表局部变量public class TestStudentpublic static void main(String args)Student stu = new Student();stu.setAge(25);System.out.println(stu.age);class Studentint age;String name;public void setAge(int age)/stu.age = 25;this.age = age;/实例变量和局部变量出现重名的时候,如果不写this.则这句没有意义,打印age的默认值0数据类型1.基本数据类型 primitive types8种booleancharbyteshortintlongfloatdoubleFloating-point numbers without an F suffix (such as 3.402) are always considered to be of type double.If you want to round a floating-point number to the nearest integer (which is the more useful operation in most cases), use the Math.round method:double x = 9.997;int nx = (int) Math.round(x);Now the variable nx has the value 10.1.boolean布尔型true / false2.char字符型3.整数型 (符号位 数值位)byte8位 -128 127short16 - 215 215 -1int32 *long64 即-2 (n-1) 2(n-1)-14.浮点型 (符号位 幂指位 数值位)float32位 double64位 *2.引用数据类型(自定义类型 对象类型)无数种byte short (char) int long float double自动提升(就近提升)强制类型转换这种类型提升的规则,对于方法参数匹配同样适用public class Testpublic static void main(String args)boolean flag = true;System.out.println(flag);char c1 = 中;char c2 = 97;char c3 = u0000;char c4 = t;byte b1 = 1;byte b2 = 2;byte b3 = (byte)(b1+b2);/int类型 强制类型转换int i1 = 45;int i2 = 031;/8进制int i3 = 0x31; /16进制long l1 = 1;long l2 = 1L;float f1 = 0.1F;double d1 = 0.1D;public class TestDataTypepublic static void main(String args)int i=10;get(i);public static void get(byte a)System.out.println(我是byte型);public static void get(long b)System.out.println(我是long型);public static void get(double c)System.out.println(我是double型);运行结果:我是long型 (方法参数匹配就近提升)public class DataTypepublic static void main(String args)int i=10;long d=get(i);System.out.println(d); /打印long类型的20public static int get(double a)return (int)a;public static int get(byte b)return b;public static int get(float c)return (int)c*2; /自动就近提升,所以调用这个方法,因为返回值为int型,所以代码中要强制类型转换short a = 1;a = a + 1;编译错误,a+1运算结果是int型,需要强制转换类型short a = 1; a += 1;可以正确编译public class TestArgumentspublic static void main(String args)byte i = 1;get(i);/方法的调用public static void get(short d)/方法的定义,方法的参数作为局部变量/short d = i;如果再写这句就重复定义System.out.println(d);public class TestArgspublic static void main(String args)Car benz = new Car();benz.number = 99999;changeNumber(benz);System.out.println(benz.number);public static void changeNumber(Car car)/Car car = benz;/Java当中只有值传递car.number = 88888;class Carint number;画图:运行结果:88888public class TestExecpublic static void main(String args)IntA ia = new IntA();ia.i = 55;change(ia);System.out.println(ia.i);public static void change(IntA ib)/IntA ib = ia;ib = new IntA();/如果去掉这句则同上一个例子,运行结果为99ib.i = 99;class IntAint i;画图:运行结果:55public class Execprivate static int j = 0;private static boolean methodB(int k)j += k;/j=4;return true;public static void methodA(int i)/int i = 0;boolean b;b = i 10 | methodB(4);/逻辑非短路b = i = =1000); / 编程语言当中 = 赋值运算符 = 判断是否相等,打印false/*逻辑非短路运算符:& | 逻辑短路运算符: & |*/System.out.println( i2000 & i=10 | +m3);System.out.println(m);/打印11/*instanceof格式:一个引用 instanceof 一个类左边引用所指向的对象是否是右边类型的一个实例System.out.println(stu instanceof Student);*/*1 ? 2 : 3 三目运算符*/int ii = 5;System.out.println(ii10 ? 100.0 : 1000);/自动提升为三个数值中的最大类型,这里打印1000.0TestOperator.absolute(3);public static void absolute(int number)System.out.println( number=0 ? number : -number );运算符优先级转义字符Day03流程控制分支:if elseelse与最近的if构成一组switch case循环:forwhiledo while循环标签:break continuepublic class TestSwitchCasepublic static void main(String args)int i = 5;switch(i)/byte short char int 不能在括号里定义icase 1:System.out.println(i是1);break;case 2:System.out.println(i是2);break;case 3:System.out.println(i是3);break;case 4:System.out.println(i是4);break;default:System.out.println(i不是1234);break;public class TestForpublic static void main(String args)/程序当中相邻的相似的代码肯定可以简化/打印1到20之间所有的偶数for(int i = 1; i 0 ; i-)System.out.println(i);System.out.println(i);/这句代码已经出for循环,for 循环上面必须定义i/*for循环是while循环的便捷形式*/i = 100;/ for 1while(i0)/for 2System.out.println(i);/for 4i-;/for 3public class TestDoWhilepublic static void main(String args)int i = 9;doSystem.out.println(能看到我吗?); /无论条件是否成立 循环体首先要执行一次while(+i=10);public class TestBreakContinuepublic static void main(String args)for(int i = 10;i0;i-)if(i=3) /continue;/结束当次循环 直接开始下次循环break;/结束break所在的循环System.out.println(i);System.out.println(循环已经执行结束);/*打印1-100之间所有的质数(素数)*/public class TestZhiShupublic static void main(String args)System.out.println(2);for(int i = 3;i=100;i+=2)if(checkNumber(i)System.out.println(i);public static boolean checkNumber(int number)if(number=1)return false;for(int i = 3; i=(number/2) ; i+=2)if(number%i = 0)return false;return true;public class ForExecpublic static void main(String args)outer:for(int i = 1;i6;i+)inner:for(int j = 1;j6;j+)if(i=3)break outer;System.out.println(i=+i+t j=+j);/*判定公历闰年遵循的规律为: 四年一闰,百年不闰,四百年再闰.公历闰年的简单计算方法:(符合以下条件之一的年份即为闰年)1.能被4整除而不能被100整除。(如2004年就是闰年,1900年不是)2.能被400整除。(如2000年是闰年)题目:判断年份是不是闰年,有三次输入机会*/import java.util.Scanner; /扫描仪public class TestLeapYearpublic static void main(String args)int i=0;while(i+3)switch(i)case 1:System.out.println(我是灯神,给你三次机会,请输入你要判定的年份:);break;case 2:System.out.println(哈哈,你还有两次机会,说出你要判断的年份:);break;case 3:System.out.println(你还有最后的机会,输入你要判断的年份吧:);Scanner sc=new Scanner(System.in); /从标准输入设备建立一个扫描仪int year=sc.nextInt(); /从扫描仪得到一个整数if(year%100!=0&year%4=0)|year%400=0)System.out.println(神灯显灵吧!答案是:This year is a leap year!n);elseSystem.out.println(神灯显灵吧!答案是:This year is not a leap year!n);使用Scanner需要先导包:import java.util.*;Whenever you use a class that is not defined in the basic java.lang package, you need to use an import directive.注意:Comparable属于java.langComparator属于java.util (使用前import) public class TestNinepublic static void main(String args)outer:for(int i=1;i=9;i+)inner:for(int j=1;j=9;j+)System.out.print(j+i+=+(i*j)+t);if(j=i)System.out.println();continue outer;/或者用break;Day04 数组import java.util.*;public class TestMay162public static void main(String args)/Java当中的数组 存储空间等大而且连续/数组和它存放什么类型的数据没有任何关系 数组就是引用类型的int a=new int5; /可以通过for循环初始化数组或者遍历数组;数组的length属性 标示它当中有几个存储空间for(int i=0;ia.length;i+)ai=i;System.out.println(ai);/可以用 foreach循环 遍历数组中每个元素for(float i:a)System.out.println(i);/创建匿名数组,可以直接给已有数组重新初始化a=new int18,11,12,16,14;/数组排序Arrays.sort(a); for(int i:a)System.out.println(i);/数组的复制/手动复制数组int e=new inta.length; for(int i=0;ia.length;i+)ei=ai; /通过Object的克隆方法int c=a.clone();/通过java.util.Arrays类中的copyOf方法int b=Arrays.copyOf(a,a.length); /通过System类当中的arraycopy方法int d=new inta.length; System.arraycopy(a,0,d,0,a.length);/*arraycopy(1,2,3,4,5)1.源数组2.源数组开始复制的下标3.目标数组4.目标数组第几个开始放新的值5.一共放多少个*/public class TestObjectArraypublic static void main(String args)/引用类型的数组 初始化数组并不等于初始化当中的元素/数组被初始化了 数组当中的元素(学生对象)还没被初始化Student et0903 = new Student5;for(int i = 0;iet0903.length; i+)et0903i = new Student();/for循环 数组当中的元素 学生对象 已经完成了初始化工作class Studentint age;String name;public void study()System.out.println(name+好好学习,天天向上);上例图示:利用数组解决四个问题:1. 已经知道:有一对熊猫 团团圆圆 ,三个月之后生下一对小熊猫之后每个月生下一对熊猫,小熊猫满三个月之后,每个月生一对儿小熊猫问:第23个月 熊猫总共多少只?分析:每个月小熊猫的对数关系为1 1 2 3 5 8 13 21 .public class Pandapublic static void main(String args)int iset=new int23;iset0=1;iset1=1;for(int i=2;iiset.length;i+)iseti=iseti-2+iseti-1;System.out.println(iset22);2. 已经知道:100个房间,每个房间里有一盏灯(不亮) 现在有一百个人排成一队第一个人拉所有能把1整除的房间里的灯第二个人拉所有能把2整除的房间里的灯。第100个人拉所有能把100整除的房间里的灯问:最后哪些灯是亮的(考虑实现效率!)public class TestLightpublic static void main(String args)Light room=new Light100;for(int i=0;i100;i+)roomi=new Light();for(int human=1;human=100;human+)for(int number=1;number=100;number+)if(number%human=0)roomnumber-1.pull();for(int i=0;i100;i+)if(roomi.isOn)System.out.println(第+(i+1)+个房间的灯是亮的);class Lightboolean isOn; /boolean型默认值是falsepublic void pull()isOn=!isOn;3. 验证哥德巴赫猜想:任何一个大于6的偶数能够拆分成两个质数相加的和/*分析模拟拆分的过程10:2 8 X3 7 right4 6X5 5right*/import java.util.*;public class GoldbachConjecturepublic static void main(String args)Scanner sc=new Scanner(System.in);System.out.println(为了验证哥德巴赫猜想请输入一个大于6的偶数:);int number=sc.nextInt();while(number=6|number%2!=0)System.out.println(你输入的数据不合法,请重新输入:);number=sc.nextInt();for(int i=2;i=number/2;i+)if(check(i)&check(number-i)System.out.println(你输入的数字是两个质数+i+和+(number-i)+的和);public static boolean check(int num)for(int i=2;i=num/2;i+)if(num%i=0)return false;return true;4. 验证数学黑洞问题:任意一个4位数,只要不是4位都相同的,那么取它最大排列组合减去最小排列组合,得到的数再取最大排列组合减去最小排列组合,依次类推,不超过7次则肯定会得到数字6174import java.util.*;public class TestBlackHolepublic static void main(String args)Scanner sc=new Scanner(System.in);System.out.println(为了验证数学黑洞,请输入一个四位数字,且四位不相同:);String number=sc.next();while(!number.equals(6174)int max=getMax(number);System.out.println(number+的最大排列组合是:+max);int min=getMin(number);System.out.println(最小排列组合是:+min);number=max-min+;System.out.println(二者想减得到的新数字为:+number);public static int getMax(String str)char nums=str.toCharArray();Arrays.sort(nums);StringBuilder builder=new StringBuilder(new String(nums);builder.reverse();int ok=Integer.parseInt(builder.toString();return ok;public static int getMin(String str)char nums=str.toCharArray();Arrays.sort(nums);String s=new String(nums);int ok=Integer.parseInt(s);return ok;关于二维数组:Java当中的二维数组其实就是数组(引用类型)的数组,下面一段代码定义了一个存放不同个数元素的数组的数组int iset = new int7;iset0 = new int3;iset 1 = new int3;iset 2 = new int4;iset 3 = new int3;iset 4 = new int3;iset 5 = new int2;iset 6 = new int2;图示:Day05 面向对象三大基本特征封装(encapsulation)继承(inheritance)多态(polymorphism)public class TestEncappublic static void main(String args)Human hm = new Human();hm.setAge(30);System.out.println(hm.getAge();class Humanprivate int age;private String name;public int getAge()return age;public void setAge(int age)/this 当前对象 调用这个方法的对象this.age = age;public void eat()System.out.println(吃饭);/继承:Java中的类只有单根继承。父类有,相当于子类也有。可以继承父类中的属性和方法,不能继承构造方法public class TestKFCpublic static void main(String args)餐厅 kfc = new 餐厅(); = 肯德基山大路店;Japanese xiaoQuan = new Japanese();Chinese zhangFei = new Chinese();English xiaoBei = new English();kfc.service(xiaoQuan);kfc.service(zhangFei);kfc.service(xiaoBei);class 餐厅String name;public void service(People peo)System.out.println(提供食物);class Peopleint age;String name;clas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校教师资格证之《高等教育法规》考前冲刺模拟题库提供答案解析及答案详解参考
- 难点解析-人教版8年级数学下册《平行四边形》综合测评试题(含详解)
- 导游资格考试常考点试卷(全优)附答案详解
- 2024年12月急救理论知识习题库(附参考答案)
- 2025年陕西渭南师范学院人才招聘10人笔试模拟试题及参考答案详解1套
- 辅警招聘考试考试黑钻押题含完整答案详解【全优】
- 辅警招聘考试考前冲刺练习试题(夺冠系列)附答案详解
- 2025年广播电视编辑记者模拟题库附完整答案详解【网校专用】
- 2024年安全监察人员自我提分评估【网校专用】附答案详解
- 2025年上半年黑龙江中医药大学附属第四医院招聘工作人员笔试备考试题附答案详解(突破训练)
- 2022年11月四川省凉山州中级人民法院逐级遴选4名法官笔试题库含答案解析
- 中国图书馆分类法讲座
- 碧桂园展示区品质验收评分表(2017版)
- 岗位绩效考核指标及评分细则(工艺工程师 )
- GB/T 5845.1-2008城市公共交通标志第1部分:总标志和分类标志
- GB/T 36195-2018畜禽粪便无害化处理技术规范
- GB/T 12008.3-2009塑料聚醚多元醇第3部分:羟值的测定
- 风障、阳畦、温床及遮光设施的性能及应用课件
- 外科缝合技术课件
- 《刑法》完整课件(课件)
- 译林版六年级英语上册 Unit 3 第4课时 教学课件PPT小学公开课
评论
0/150
提交评论