您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 79Java学习笔记 基于马士兵老师视频教学的笔记
Java学习笔记学习Java首先要配置环境变量,在电脑属性的高级中,点击环境变量,classpath中有一英文句号“.”后跟一个分号,表示当前路径的意思。由第一个程序Helloworld为例说明Java的基本运行代码:publicclassHelloWorld{publicstaticvoidmain(Stringargs[]){System.out.println(Hello,World!);}}在Java中只能允许有一个公共类,此区别于C++。还有Java的写作风格与C和C++有很大区别。下面细谈Java的基本语法,与其他语言类似,Java每一条语句都以“;”结束。1.shortbytechar之间不会自动转换,他们运算时首先转换为int然后进行运算;boolean不会进行转换;如:byteb1;byteb2;byteb3=byte(b1+b2);b1+b2运算后是int类型,可以bytea=1;//可以把数值直接赋值不超范围,(-128~127)floatf1=1.234f;longl1=300000000L;f和L一定加上;2.System.out.println();//输出后换行System.out.print();//输出后不换行&&和&的区别:表达式1&&表达式2只要表达式1错误,后不再计算,表达式1&表达式2就算表达式1错误表达式2也会计算。+既可以作为加号,也可以作为连接符,即左右都是字符串,当有一个是字符串,系统默认把另一个转化为字符串再处理。例如:System.out.println(“c=”+c);打印时,无论任何类型,都先转换为字符型,再进行打印。3.聚合关系,就是包含关系,实现关系就像虚基类,在派生类中实现。4.定义成员变量可以初始化,若不则自动初始化(可以直接在成员变量的定义时初始化);但局部变量一定要自己初始化,boolean类型默认为false,其他默认为0;在main中调用函数时,只要定义了构造函数并且初始化,就一定要把实参的值写到函数里,不能少参数。因为所有数值定义后都有默认值,所以一定要初始化如:intx;x默认为0;但是如果都不写初始值,调用函数可以不用参数。5.String关键字是字符串定义,不是字符如:(Stringname=“fgsdhj”//也不用写name[]);必须使用new来创建对象6.静态数据成员static:在类体(Car)中定义的时候privatestaticintsid=0;……在以后的publicstaticvoidmain()中可以通过Car.sid;或者Carmm;mm.sid;访问7.import与packagepackage位于程序开始如packagecom.bjsxt.java140;并把生成相应的类放到相应的子目录下即新建文件在原来类的目录下新建com\\bjsxt\\java140,把类的.class文件放在该目录下,就是打包了,在jdk1.5以后类的.java文件可能也会影响,所以把.java删掉。在以后的类中调用时可以com.bjsxt.java140.类名=new类名();或者用引入:importcom.bjsxt.java140.类名;或者importcom.bjsxt.java140.*包括该目录下所有类8.在要打包的上一层文件目录E:\java\test2\jar–cvftest2.jar就能把test2目录下所有文件打包成.jar文件即windows下的压缩包。9.继承权限:用关键字extends.有privateprotecteddefault包权限public而private继承继承之后也没有使用权,只有在定义private的类中才可以使用;10.函数重写必须遵循函数名一样,参数类型,返回类型,也必须一致,并在重写的函数体中增加相应的代码,不是重载;重写的函数不能比被重写的函数有更严格的访问权限,至少一样。11.子类的构造方法中必须对基类的构造函数声明,在子类的构造函数中首先写super();里面加参数,意思是调用基类的构造函数,若不写,系统默认调用基类无参数的构造函数,若基类中没有无参数的构造函数,则编译出错;12.在构造函数中,前面可以加public也可以不加;在类与类之间“;”可加可不加,编译不会出错。在构造函数的入口参数设置是一定注意,与上面的初始化保持一致就好。13.object类的定义,了解一下,其中有一个方法,toString方法是返回一个说明该类的说明,在API文档中查找,建议重写。关于object中,equals方法返回值是boolean,可以重写,publicbooleanequals(objectobj){}内容自定义;在main()中:System.out.println(c==a);或者System.out.println(a.equals(c));一样用;字符串比较也已也一样,且不为空才行。14.对象类型转换,如Animala=newAnimal();Catc=newCat();System.out.println(cinstanceofa)//输出true;也可以这样a=newCat();//基类强制转化为子类,可以,只是a不能访问Cat类中新定义的类型。可以这样访问新定义的类型。Catd=(Cat)a;//用强制类型转化基类为子类,然后转化后一样用。//e:\java\test2\TestTeacher\TestTeacher.java15.关于多态,一定要有继承,要有重写,要有父类指向子类的引用。动态联编的实现是为了以后程序功能的扩展,而不改变源代码.//e:\java\teat2\Testdongtai\TestLady.java16.抽象类:若一个类中含有抽象和方法,则一定要把给类定义为抽象类,抽象abstract类似于C++中的纯虚函数。Publicabstractvoidenjoy();就没有{}内部代码了。而且子类中的重写父类的那个方法一定要有实现代码,否则报错。也可以再次把该函数声明为抽象类,这样编译不会出错。但是就不能用该子类定义新对象,因为抽象类是残缺的。17.final关键字中final的变量不能被改变,final的方法不能被重写,final的类不能被继承。PublicfinalclassString(){}//写法如下finalinti=9;18.interface接口设置,即为C++中的多重继承只是接口继承的时候不用关键字extends而用implements可以用implementsA,B,C,D{}这是与extends不同地方。在子类中分别实现积累的代码,原基类就像抽象类一样,其函数的设置在子类中实现的。在本例中还涉及强制类型转换,可见性与不可见性的问题,还涉及动态联编。//e:\java\test2\Testjiekou\TestInterface.java19.Java中关于异常处理机制,trythrowcatch其中经常使用catch(ArithmeticExceptione){System.out.println(系统正在维护,请与管理员联系);e.printStackTrace();//其中e就像一个类的对象一样使用,e.printStackTrace();是打印出错的堆栈信息,以便修正。ArithmeticException和printStackTrace()是系统自己定义的。20.finally{}是一定执行的语句,catch语句之后自动停止,以后不再执行。对所有异常处理,可以直接抛出throwsException{}不管是IoException或是NotFoundFileException……;不想处理就继续抛出。方法重写必须与原来的抛出的异常一致,不得是别的。但是不抛异常没有关系。21.数组定义,也是引用,int[]s,或是ints[];只是中括号内不能有数字,区别于c++;如:int[]a;//声明数组名字a=newint[5];//动态分配空间在动态分布空间之后,a.length自动记录数组的长度,以后可以直接调用。22.ipconfig在命令行可以显示ip地址,ipconfig-all可以显示更详细的信息;23.在main函数中,(String[]args)的作用是把在命令行执行时加的参数自动保存在agrs数组里面;补充:在基本数据类型里面,可以通过double.parsedouble()把一个字符类型的变量转化为double类型。其他类型类似,比如intfloatbyte。。。。。。直接把’3’转化为324.函数返回值类型可以是数组类型,publicstaticDate[]bubblesort(Datea){……returna;}这样也是可以实现的。25.二位数组定义,初始化时,inta[3][2]={{1,2},{2,3},{23,1}};是错误的,不能写3,java自动检查长度。26.关于string,有很多种方法,就关于字符串的种种处理,大小写处理,空格处理(trim),截取字符,把字符分割成子串(split),查找API文档。Stringbuffer是可变的字符序列,与不可变的string相比,更加具有优势,方法与其类似,在执行效率上比较高。27.d[i][j]=Double.valueOf(sSecond[j]);把字符串转化为double类型的数据,调用double的方法,在前面加上Double.一定不要少。包括二维数组的定义使用,把两维分开来写。//E:/java/test6/ArrayParser.java28.Math类java.lang.math与数学相关的一些方法,File与文件相关的方法,java.io.*;文件的创建,File(Stringparent,Stringchild)parent代表路径,而child是要创建的文件名称。f.getParentFile().mkdirs();//只是把对应的目录创建成功文件并没有生成。//e:/java/test6/TestFile.java29.枚举类型规定只能取规定的值,其余的不允许取值,在游戏开发时多用,如:publicenummycolour{red,green,blue};mycolourm=mycolour.red;访问时类似于静态成员变量的访问。可以提前发现错误,在编译时发现。容器:30.List与SetMap:(都是接口)Set的数据对象是没有顺序不可重复的,即重复的元素不会被加入集合。//e:\java\test7\TestSet.javaList的数据对象是有顺序可以重复的,自增了一些方法,见API。Map是把数据成对成对地装入容器。Put方法是object的原因是当放入的key已经存在时,原来的value被替换掉,作为返回值返回。Get方法返回的是value.//e:\java\tets7\TestMap.java31.iterator是collection的一个接口,其作用是容器的遍历,其方法有hasNext,next,remove具体用法是Iteratori=c.iterator();//c为Collectionc=newHashSet();然后i就可以调用Iterator的方法了。Iterator的remove方法是迭代过程中删除元素的唯一安全的方法。而不是c.remove。//e:\java\test7\collection.java32.Collections类封装了List许多静态的方法。调用的时候,因为是静态的方法,所以直接用类名加方法就行,如Collections.sort(l1);l1为List的容器从低到高排序//e:\java\test7\TestList.java33.(补充)privatestaticfinalintone=1;//关键字的顺序关于args在运行java。。。。。。。命令时,在后面加上数字字母。。。就是加在agrs数组中。数组的args的长度args.length没有括号六个基本类型B
本文标题:79Java学习笔记 基于马士兵老师视频教学的笔记
链接地址:https://www.777doc.com/doc-6103598 .html