漫长的期末终于结束了,好不容易盼到假期,当然是要偷偷摸摸地卷死所有人鸭~【doge】
从7月份开始,我会将每天白天的学习内容进行整理,发布博客(如果出去玩就鸽了哈~),一方面希望能对自己一天的学习情况进行总结,不要那么懒只顾着看和听,另一方面希望能有人见证我的成长,共同努力,这个夏天,不要再留下任何遗憾了,留给未来的每一年来回忆吧~
目录
一、Java与它的前辈
二、类与对象
今日份总结
一、Java与它的前辈
Java比它的前辈语言C语言以及在它之前另一种占统治地位的面向对象的编程语言C++都简单得多,Java可看作是C++的一种很大程度上的改进和简化的版本比如,C++中最让程序员头疼的两种特性是指针和多重继承,在Java中,指针被取消了,多重继承也被替换成了接口。另外Java还拥有自动的内存垃圾回收机制,不需要像C++程序员那样手动申请内存和回收内存垃圾。
Java的数据类型、运算符、表达式和语句与C语言有着许多的重合之处,在此不做过多赘述,只强调两者的不同。
二、类与对象
1.类声明和类体
(1)通过关键字extends声明父类的名字,在Java中的类只能有一个直接父类。
(2)通过关键字implements声明所要实现的接口的名字,一个类可以实现多个接口,多个接口的名字之间以逗号分隔。
//一个复杂的类声明的例子
public class Sun extends Father implements Playable,Workable{}
2.域/成员变量
(1)成员变量可以分为两种:实例变量和类变量。
用关键字static修饰的成员变量称为静态变量,也即类变量。反之为实例变量
(2)修改一个对象的类变量,会影响其他由这个类模板创建的对象相应的类变量。因为类变量存放在和类模板相关联的内存空间,且只有一个副本。
类变量是与类相关联的数据变量,它不仅可以通过某个对象访问,也可以直接通过类名访问。与之相反,实例变量是和特定的对象实例相关联的,只能通过对象变量访问。
(3)如果一个域被修饰符final修饰,它就变成了常量,也就是这个域的值是不能够被改动的。
3.成员方法
(1)成员方法可以分为类方法和实例方法,区别同上。
在实例方法中,既可以访问实例变量和实例方法,也可以访问类变量和类方法;
但是在类方法中, 只可以访问类变量和类方法,不允许访问实例变量和实例方法。
public class Student{
private static int number=0;
private String name;
public Student(String n){
name=n;
number++;
}
public static int getNumber(){
return number;
}
public String getName(){
return name;}
public static void main(String[]args){
Student s1,s2,s3;
s1=new Student("Alice");
s2=new Student("Bob");
s3=new Student("Eve");
System.out.printf("There are %d students.n",Student.getNumber());
System.out.printIn("Their names are:");
System.out.printIn(s1.getName());
System.out.printIn(s2.getName());
System.out.printIn(s3.getName());
}}
4.嵌套类和内部类
(1)Java允许在一个类中定义另一个类,这样的类被称为嵌套类。而包含嵌套类的类被称为这个内部类的外部类。
class OuterClass{
class InnerClass{
}
}
内部类InnerClass位于外部类OuterClass之内,因此它可以直接访问OuterClass的成员方法和成员变量。实例化内部类之前必须先实例化外部类。
OuterClass outerObj=new OuterClass(...); OuterClass.InnerClass innerObj=OuterObj.new InnerClass(...);
5.包
在Java中,把一组相关的类和接口放在同一个包里面,以便程序员查找使用类和接口、避免命名冲突和实现访问控制。
在Java 中,包的命名遵循如下的惯例:
(1)使用小写字母命名包,以避免和类名或接口名发生冲突。
(2为所创建的包的名称。比如深圳大学计算机与软件学院的域名是 csse.szu.edu.cn,则深圳大学计算机与软件学院学生所建的类和接口应该放在限定名为cn.edu.szu.csse的包中。
(3)Java语言本身的包使用java.或javax.作为开头。
package cn.edu.szu.csse;
public class PackageTset{
public void test(){
System.out.printIn("This is class PackageTest!");
}
public static void main(String[] args){
PackageTest pt=new PackageTest();
pt.test;
}
}
使用包
如果使用同一个包里面的其它类,是不需要考虑包的限定名的。但是如果要使用另外一个包提供的类和接口,就要考虑如何告诉Java编译器找到你所需要使用的类了。其中一种方法是使用包中类和接口的完全限定名。
//如果我们打算在cn.edu.szu.csse包外面使用这个类的话 cn.edu.szu.csse.PackageTest pt=new cn.edu.szu.csse.PackageTest();
在不经常使用这样的类或接口的名字的情况下,使用完全限定名是很方便的。但是如果需要频繁的使用其他包中的类或接口,就要使用import语句导入一个包中的所有成员或者某个特定的成员。
为了把某个包的成员导入到当前的源文件,应该在源文件的开头,在package语句之后,其他任何语句之前放入import语句。
import cn.edu.szu.csse.PackageTest;
如果一个包中有许多的类,而你又需要使用他们的话,就可以考虑导入整个包。应该使用带有通配符(*)的import语句。
import cn.edu.szu.csse.*;
今日份总结
额 ,今天又是吹水的一天~不过还是距离Java的内核更近了一点,很快就可以肝完啦,之后好好搞算法叭



