最近公司没什么安排,自己学java,主要参考书籍是java入门1.2.3!
首先说明一下,lz是干linuxC的,对于C++可谓是一点都不通,所以对面向对象语言的编码也不是很通!
本书lz看到了12章,所以今天想总结一下学到的东西!。。。
第一章:主要讲环境配置,这里要说一下,在环境配置的时候,不要把原来带的配置删掉,因为那是windows的环境配置,如果删除了,那么windows的命令行命令将不能执行,比如ping。。。。
然后就是写个hello world的程序,引出什么是类,就是函数名字和函数书写的方式有区别!都是main函数!
第二章:安装开发集成环境eclipse:
然后再eclipse中写个hello world!
第三章:主要讲基本数据类型和运算符
到这里对楼主都没有什么难度,因为是C语言出身!
这里需要说一下java中类型转换的问题:java中可以将低精度赋值给高精度,这个好理解,将一个空间占用量较小的数放到占用空间较大的数里,反过来就是错的!
这里还需要说明一下浮点数比较的问题:如果两个浮点数的差值小于一个值,比如0.0000001,那么就可以说这两个数相等!关于这个数的定义可以根据需要来定!
这里接触到一个新的“数据类型的类”String,用于字符串的使用,而且使用方便可以直接将两个String相加!
第四章:主要讲的是java执行流程
其实就是架上一些if else,while,switch之类的条件表达式。。。lz是C出身,这都不是什么问题!
然后使用循环嵌套完成一个小练习,用C也可以写,但是没有这么方便!
回忆一下:import和include:读取键盘的程序java直接提供:BufferedRead reader = new BufferedReader(new InputStreamReader(System。in))
以上是声明一个引用的类,这才是接收:Integer.parseInt(reade.readLine()),这样就能接收控制台输入了,实际就是键盘输入java提供的类很方便使用!
第五章:主要讲的是数组
lz是C出身,所以刚开始学的不是很难!就是先声明在使用,for example:int【】 = students;students = new int【5】;这样去使用!
数组是一类数据的组合,必须严格执行,在实例化的时候必须是严格的相同的类型!这里不能使用指针数组。。。。说道这想起来,我同学定义了一个指针数组,然后使用指针函数,然后此时我想起来了,这个C的封装方式和java类的方法好像是一样的。。。。在创建数组的时候不需要给初始值,因为自动赋值为‘0’,然后这里提到了以简单的数组的应用,比如顶一个int 【】 samestudent,然后samestudent = students;这样他们两个意义完全相同的数据。。这里有提到多维数组,主要指的的二维数组,其实多维数组在实际中不是很多用,在C语言中多用到的是指针数组和链表。。比如定义一个int allstudents【0】【1】】【6】 = 85;可以理解为1年二班的第六位同学的成绩是85;。。。
第六章:java的高级特性,类和对象
个人认为这个很好理解,就是讲的语法:类中第一个public类的名字必须和java包的名字相同,eclipse中直接会给你创建。使用new关键字来给类惊醒实力话!类的实例化之后就形成了对象。。这里主要理解类,对象,引用,比如,car student = new car();然后car student1;student1 = student;
这样student1 就是student 的引用!在类中创建数组就和函数中使用数组是一样的,只不过java中函数就是类的方法。。。。可以这么理解。。。。。
第七章:java的重载和构造方法。。
这里首先讲述了什么是重载,其实就是类中的方法重名了,但是参数不同,所以在调用的时候根据不同的参数去选择方法。。。在类中方法外定义的变量称为实例变量,如果方法中的变量重名了,那么在类中使用this关键字调用方法外的变量。。。也可以在方法中调用方法,和函数中调用函数基本相同。。。。
这里讲述了构造方法,就是和类名相同,但是没有返回值类型的方法。。。。。如果类中没有构造方法,系统会自动添加构造方法的。。。。。一般都会自己去写构造方法给重要的属性参数赋值。。有时候,有些关键字功能很多,比如在构造方法中调用构造方法,此时this关键字可以巧用。。见185页。。。
第八章:java中包,package。
java中用来存放源文件的文件夹就叫做package。。然后如果要使用的方法的类在其他的包里面,那么import 包+路径。。或者import.*将包全部include进来。。
如果导入的类名相同,那么使用权限定名字就好。。。java也使用反斜杠注释。。。
第九章:数组,字符串,main();
这里说到数组也是类,int【】arr = new int【9】;而arr.length就是数组的长度,此时又要说java真的很简便。。修饰符final,不可改变的,不论是参数,还是方法。。必须在声明的时候附上初始值。。arr.clone();这是数组 的赋值,返回值可以直接传给数组的引用。不会影响原来的数组。。但是有时候会指向相同的实例,此时就会有影响。。String类也是一样,String str ;str.length就是这个字符串的长度。。可以直接使用== 判断两个字符串是不是相同。。str.charAT(n);返回字符串中第n个字符的值。。。str.subString(n),从第n个字符开始到最后的字符串。。判断两个字符串是不是相等。。str1.equals(str2),返回值是布尔型。。这都是具体的类的使用方法没什么难的。。str1.startswith.(str2)判断字符串1是不是以字符串2开头。。str1.split(“#”),以#为分割,返回n个字符串。。String类在初始化后不可以改变。需要新定义类去接收返回值,但是Stringbuffer可以改变。。。append()方法可以将字符串拼接。。java一样可以给主函数传递参数。。
java中的static关键字:如果一个变量使用了static关键字修饰,那么这就是一个类范围内的属性,所有的类对象都共享这么属性,叫做类变量,,就是生存时间比较久远。。
如果用static修饰方法,叫做类方法,可以不创建对象直接调用,但是不能使用this关键字去访问static方法或参数。。。本节主要讲的是方法的使用。。
第十章:继承和多态。。。
这里开始和C语言的区别很大,,继承和多态是面向对象语言的核心功能。。。以为覆盖所以继承才会多态。。使用public修饰父类,使权限最大化!
继承主要主要是将共性的问题集中描述在一个类中,而独有的问题,描述在自己的类中,如果要修改共性特征中的某个性质,那么此时就需要方法的覆盖,然后就会涉及到多态。。。继承的函数extends + 某个类。。子类无法继承父类的构造方法。。。。使用super();方法可以调用父类中的无参数的构造方法且只能在子类的构造方法中使用。。语法上必须和父类的某个构造方法相同。。把一个子类的对象当做父类的对象来使用,父类引用子类对象可以,但是引用的方法或者参数父类代码中需要有!没有继承关系的类不可以相互引用,所有类的父类object。。。所以所有的类都可以用该类去用,当父类中的方法不再通用就需要使用到覆盖的概念,对于指向子类的父类引用,在调用覆盖的方法的时候,还是覆盖的,因为本质的内容没有改变,覆盖难点在于子类方法优先原则。。。由于覆盖会执行子类自定义的方法,所以方法要写好。。。。。这里super关键字可以调用父类的方法和属性。。。上面说到过this关键字中可以调用本类中的方法和属性。。。。。多态就是因为重载和覆盖等引起的结果未知问题。。。重载 是一个类中重复的方法。。。istanceof 得知对象的类型。。。。继承和多态让java世界丰富多彩
。。。。。。。。。。。。。。待续。。。。。。。。。。。。。。。