Java学习中被忽略的知识点与技巧(1)

JVM:java virtual machine
JRE:java runtime environment = JVM + java系统类库,运行java程序
JDK:java development kit = JRE + 编译/运行等命令工具

运行java的最小环境:JRE
开发java的最小环境:JDK

环境变量:    JAVA_HOME: Path for jdk
    CLASS_PATH: Path to search for Class, '.' default
    PATH: Path for /jdk/bin

Development Steps:
    new Java project
    new Java package
    new Java class

当且仅当运算数中有long时,运算结果才是long
long dis1 = 1000000000*100000000L;    //no overflow, 100000000000000000
long dis2 = 1000000000*100000000;    //overflow, 1569325056

运算从前向后进行,所以最好是第一个数字是Long
long dis1 = 100000000*10000000000*10000000L;    //overflow,-15304949760000000 
long dis2 = 100000000L*100000000000*10000000;    //no overflow,1864712049423024128

System.time.currentTimeMillis: Milliseconds from start of 1970

Default type of decimal is double. For float constant a 'f' or 'F' is required.

浮点数会产生舍入误差,因为二进制表示有误差。完全不能接收误差的,使用BigDecimal

数据从小到大自动转换,从大到小强制转换

逻辑运算是短路的

加法运算符是从前向后的,所以
    System.out.println(11+22+"");    //输出33
    System.out.println(""+11+22);    //输出1122
变量作用域:到下面一个大括号。
相同作用域中不能有重名变量

switch语句:
    优点:简介快速
    缺点:只能判断整数相等

while和do-while:是否至少执行一次

返回每月天数的函数
switch(month) {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:
            return 31;
        case 2:
            return 28;
        default:
            return 30;    
        }

Math.random(); 0-1之间的随机数

数组arr = {1,2,3};只能用于初始化

数组访问:arr.length

数组的复制:System.arraycopy(src, srcPos, dest, destPos, length);
    b = Arrays.copyOf(original, newLength),多出来的length补默认值0

数组扩容:使用Arrays.copyOf方法进行扩容

方法的签名:方法名+参数类型
方法重载的意义:降低用户的使用负担,对于用户而言更加优雅

补充:
同一个文件中能够包含多个类,并列关系
public修饰的类只能有一个,且必须与文件名相同

构造方法特点:
    给成员变量赋值
    构造方法必须与类名相同
    没有返回类型
    默认提供,如果自己提供了,则没有默认的无参构造方法

this:只能用在类的非静态方法中,指当前对象
this的用法:    
    this.variable:访问成员变量
    this.function:一般不用

如果构造函数出入的形参名字和成员变量一样,那么必须用this调用成员变量
技巧:可以使用this()调用本类的构造函数,实现不同构造函数

内存管理:JVM进行
堆:对象和成员变量
栈:局部变量
方法区:.class字节码文件(包括方法)

基本类型的等号是直接赋值
对象名的等号是复制引用,指向同一个文件,并非在拷贝对象,只是在拷贝引用

空指针异常:
Student[] s = new Student[5];
System.out.println(s[0]);
定义了一个Student类的数组,每个都指向null        

也可以给引用类型的数组按下列语法赋值:
    Student[] student = new Student[]{
        new Student(name, age, address),    
        new Student(name, age, address),
        new Student(name, age, address),    
        }

Java中,一个类只具有一个父类,不能继承多个父类。即不支持多继承

继承具有传递性

java规定:构造子类之前,必须先构造父类
    如果子类中没有调用父类的构造方法,则默认super调用父类的无参构造方法
    否则如果手动调用了super,则不默认调用

super的用法:
    super.成员变量名
    super.方法名
    super()调用父类的构造方法

帮助理解的例子:studnet继承person,则在student中赋值:
    this.studentid = 1120172954
    super.name = "William"
(但是,其实用this.studentid也可以修改该属性)

发布了86 篇原创文章 · 获赞 56 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/WilliamCode/article/details/103745245