写在前面:
Java作为一门完全面向对象的语言,在以后的工作中,听说如果想要从事开发类工作的话,非常重要。而作为笔者第一门完全有老师带着学的语言,笔者更加想要认真学习,毕竟还是需要拿高分的....
面向对象具有三大特征,封装,继承和多态。而Java就是一门纯面向对象语言。笔者所在学校的学习路线是Java基本语法,面向对象程序设计,软件工程设计。所以在入门阶段,主要还是学习Java的面向对象基本思想,线程编制,Java数据库以及常用的类。开发平台为JDK18,使用工具为Eclipse。均为开源软件。还有一本参考书,《Java编程思想》或者是《Think in Java》,厚厚的一本书,,,,由于笔者以后并不希望从事开发工作,,,,所以没有研读,但确实是圣经级别的教科书。
(一)Java语言基础
1、安装Java需要配置环境变量,因为Java的跨平台是通过虚拟机实现的,因此不需要像C\C++那样,考虑编译器。
2、任何一个Java程序中,必须要有一个main方法,且必须要修饰为 public static void main(String[] args),表示传入一个字符串数组作为参数。如果源文件中有多个类,那么只能有一个类是public类,而且源文件名与该类名完全相同;如果源文件中没有public类,那么文件名只需要和其中某个类名相同;程序的扩展名为.java。
3、布尔类型为boolean ;值为true 或是 false ,当变量缺省时,默认为false。
4、整型变量的缺省值为0;int型分配4字节,范围为-2e31~2e31 - 1,其他的整形分配的字节数都不同,而float型内存分配4个字节。对于字符串参数,可以使用Integer.parseInt(String s);转化为十进制整数。
5、字符类型的缺省值为'\u00000';可以使用强制类型转换来输出在Unicode表中的相应位置。
6、Java输入通过Scanner类,具体是通过创建对象的方法,Scanner reader=new Scanner(System.in); 如下:nextBoolean() nextByte() nextShort() nextInt() nextLong() nextFloat() nextDouble();
例子:double x = reader.nextDouble();
而next()方法 :读取一个单词,以空格作为分隔符,但如果输入多个单词的话,只可以读取第一个。
7、Java中数组的使用方法:
int[] ai; ai=new int[10];
String[] s; s=new String[3];
(1)、不能直接使用,必须经过初始化分配内存后才能使用。
(2)、声明数组时无需指明数组元素的个数,也不为数组元素分配内存空间。
(3)、使用arryName.length表示数组的长度。
(4)、Java不像C语言那样引入指针,地址的概念。而是分为基本类型和引用类型,基本类型数组的每个元素都是一个基本类型的变量;引用类型数组的每个元素都是对象。基本类型的值是分配在栈上的,而引用类型的值是分配在堆上的;对于引用类型的变量,栈中保存的仅仅是变量的引用(地址)
•基本类型
–内存栈中保存的值就是该变量的值; Java有八大基本类型: 整型(4种)、浮点型(2种)、字符型、布尔型
•引用类型
–内存栈中保存的值是指向变量值的地址; 类、数组等都是引用类型 引用类型:默认值为null;
8、短路逻辑运算符:
逻辑运算符&&和||也称为“短路逻辑运算符” 。例如:对于表达式op1&&op2,当op1的值为false时,&&运算符不再计算op2的值
9、instanceof用于判断对象是否由该类创建 boolean isString = x instanceof String
10、
(二)、Java中的类与面向对象
面向对象的三大特征:封装,继承,多态。
封装:–将数据和对数据的操作封装在一个对象中,并且对对象的使用者隐藏数据的实现过程
Java中不支持多继承,而是通过接口来实现的。
如果类定义了一个或者多个构造方法,那么Java不提供默认的构造方法
那么在对对象实例化的时候,必须要使用已有的构造方法。
实例方法既能对类变量操作,也能对实例
变量操作;而类方法只能对类变量进行操作
•this可以出现在实例方法和构造方法中,但不可以出现在类方法中。
•this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。
•this关键字出现在类的实例方法中时,代表正在调用该方法的当前对象。
–在类B中创建了类A的对象a,则a不能访问自己的私有变量和方法
–通过Class 对象,可以查询其代表的对象的各种信息:比如该对象所属类的名字,基类名,有哪些成员等。void PrintClassName(Object obj) {
System.out.println("The Object's class is " +obj.getClass().getName());
}
equals也是判断两个对象是否同一,是一个方法
super.被覆盖的方法名”可以在子类中显式的访问被覆盖的方法 在子类的方法中使用
子类不能从父类继承构造方法,而且子类在构造过程中必须调用其父类的构造方法
②子类的构造方法中可使用“super”调用父类的构造方法,但必须写在方法体第一行;
注意:super语句调用父类构造方法的格式:
正确:super(参数表)
错误:super.父类名(参数表);
上转型:–用父类声明的对象指向子类创建的实体,此时称为“上转型”操作,而父类对象是子类对象的“上转型”对象。父类 a = new 子类(); a是b的上转型对象
上转型:
–如果未涉及到隐藏/覆盖:能访问继承的成员、方法;不能访问子类新增的成员、方法;
–如果涉及到隐藏/覆盖:
•成员:能访问被隐藏的成员(即父类原有的成员),而不能访问子类重定义的成员
•方法:仅能够访问覆盖后的方法,父类原有的方法“消失”了