博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 基础知识点小结
阅读量:6863 次
发布时间:2019-06-26

本文共 3263 字,大约阅读时间需要 10 分钟。

小知识点

  • 所有的程序,都要定义在类里面;
  • 异常 定义方法时,使用 throws 可以用来捕获方法体内没有捕获的异常,然后以 SomeException 抛出异常
  • java是解释型语言。java虚拟机能实现一次编译多次运行。
  • JDK(java software Development kit 软件开发包),JRE(java Runtime Environment java运行环境)。
  • javac编译java程序,java运行java程序。
  • 一个文件最多有一个public class。
  • java不提供运算符的重载。
  • 建议不要在for 循环体内修改循环变量(也叫循环计数器),否则会增加程序出错的可能性。建议重新定义一个临时变量值,将循环变量值赋值给临时变量;
  • 在static方法中不能访问非static的成员。static方法是指在函数前面加上static限定符,如:public static vooid main(String args[]);public static void print();
  • static 真正的作用是用于区分成员变量、方法、内部类、初始化块这四种成员属于类本身还是属于实例;
  • 类成员不能访问实例成员;
  • static 不能修饰构造器,static 修饰的类成员属于整个类,不属于单个实例;
  • Java 编程中不要使用对象(实例)去调用 static 修饰的成员变量和方法,而是应该使用类去调用 static 修饰的成员变量、方法;
  • this 关键字总是指向调用该方法的对象,static 修饰的方法中不能使用 this 引用;
  • 系统不允许 final 变量重新赋值,子类不允许覆盖父类的 final 方法,final 类不能派生子类;

类:

  • 类可以认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量;
  • 类里各成员(构造器、成员变量field、方法)之间的定义顺序没有任何影响,static修饰的成员不能访问没有static修饰的成员;
  • Java 中属性是 property,指的是一组 settergetter 方法,比如某个类有 age 属性,意味该类包含 setAge()getAge() 两个方法;
  • 修饰符 [public|static|protected] 三者出现其一,[final|abstract] 二者只能出现其一,前面可以和 static 组合使用;
  • 构造方法既不能定义返回值类型,也不能使用 void 声明构造器没有返回值,否则会当成方法处理,就不再是构造器;
  • Java 对象,都是 Object 类的实例,都可以直接调用该类中定义的方法;
  • 子类重写父类方法时,有几个原则:
    • 重写方法不能比被重写方法限制有更严格的访问级别
    • 参数列表必须与被重写方法的相同
    • 返回类型必须与被重写方法的返回类型相同
    • 重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常
    • 不能重写被标识为final的方法

对象引用的理解

Human aPerson = new Human(160);

创建了一个Human类的对象 aPerson。

上面是一个非常简单的表述,但我们有许多细节需要深入:

  • 首先看等号的右侧。new是在内存中为对象开辟空间。具体来说,new是在内存的堆(heap)上为对象开辟空间。这一空间中,保存有对象的数据和方法。
  • 再看等号的左侧。aPerson指代一个Human对象,被称为对象引用(reference)。实际上,aPerson并不是对象本身,而是类似于一个指向对象的指针。aPerson存在于内存的栈(stack)中。
  • 当我们用等号赋值时,是将右侧new在堆中创建对象的地址赋予给对象引用。

这里的内存,指的是JVM (Java Virtual Machine)虚拟出来的Java进程内存空间

public class Demojava {    public static void main(String[] args) {        String name1 = "michael";        String name2 = "michael";        String name3 = new String("michael");        System.out.println("name1: " + name1);        System.out.println("name2: " + name2);        System.out.println("name3: " + name3);        System.out.println("name1 equal name2: " + name1.equals(name2));        System.out.println("name1 == name2: " + (name1 == name2));        System.out.println("name1 equal name3: " + name1.equals(name3));        System.out.println("name1 == name3: " + (name1 == name3));        System.out.println("name1 hashcode: " + name1.hashCode());        System.out.println("name2 hashcode: " + name2.hashCode());        System.out.println("name3 hashcode: " + name3.hashCode());        System.out.println("name1 identityhashcode: " + System.identityHashCode(name1));        System.out.println("name2 identityhashcode: " + System.identityHashCode(name2));        System.out.println("name3 identityhashcode: " + System.identityHashCode(name3));        System.out.println("End");    }}Out:name1: michaelname2: michaelname3: michaelname1 equal name2: truename1 == name2: truename1 equal name3: truename1 == name3: falsename1 hashcode: 1054337575name2 hashcode: 1054337575name3 hashcode: 1054337575name1 identityhashcode: 366712642name2 identityhashcode: 366712642name3 identityhashcode: 1829164700End

结果分析:

  • String 类重写了 equal 和 hashCode 方法,使他们比较时是依据的对象的值;
  • Object 类原始的的 equal hashCode 方法效果是和 == 比较方式一样,都是依据对象的内存地址进行处理后比较的;
  • identityHashCode 方法是依据的对象的内存地址进行处理后比较的;

相关问题:

参考:

参考

教程

转载于:https://www.cnblogs.com/michael-xiang/p/10721606.html

你可能感兴趣的文章
pytho基础之文件处理
查看>>
Javaweb学习笔记——(五)——————DOM&XML目录
查看>>
hdu 2897 巴什博弈变形
查看>>
[Linux] Android Multi-Select apk installer & uninstaller
查看>>
〖Linux〗Ubuntu13.10中使用虚拟机对MTK手机进行线刷
查看>>
〖Android〗从Android Studio转为Eclipse开发项目运行程序闪退的解决方法
查看>>
extjs简单动画2
查看>>
python编程基础之二十
查看>>
求数组最大数,该数为数组中某两个数相加
查看>>
SimpleDateFormat线程不安全
查看>>
[SCOI2008]奖励关(期望dp)
查看>>
[SCOI2007]降雨量
查看>>
H5 canvas的 width、height 与style中宽高的区别
查看>>
《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...
查看>>
面试分析
查看>>
UI中的响应时间:3个重要的界限
查看>>
jquery mobile的a标签点击无法跳转的问题
查看>>
PLSQL创建Oracle定时任务
查看>>
GAN与NLP的讨论
查看>>
在linux上面合并多个windows文件乱码的问题
查看>>