java-回头是岸(从头开始学习)

1:关于标识符有几点需要注意的:
    所有标识符都应该以字母(大小写均可),美元符,或者下划线开始
    关键字不能用作标识符
2:数组是存放在堆上的对象
3:java关键字(列出几个不常见的,其他常见的如int,long具不列出)
    assert,const,default,instanceof,native,strictfp,transient,volatile
4:java的几种类型变量
    局部变量:在方法,构造方法或者语句块中定义的变量称为局部变量。变量申明和初始化都是在方法中,方法结束后,变量就会自动销毁
    成员变量:成员变量定义在类中,方法体之外的变量。
    类变量:类变量申明在类中,方法体之外,但必须申明为static类型
5:源文件申明规则
    一个源文件只能有一个public类
    一个源文件可以由多个非public类
    源文件的名称应该和public类的类名保持一致
6:基础数据类型
变量就是申请内存来存储值,也就是说,当创建变量的时候,需要在内存中申请空间
    java的两大数据类型
        内置数据类型(基本类型)
        引用数据类型
    内置数据类型,java提供了八种基本类型。六种数字类型(四个整数型(byte,short,int,long),两个浮点型(float,double)),
    一种字符类型(char),还有一种布尔型(boolean)
    byte:8位的,有符号的,以二进制补码表示的整数,最小值-128(-2^7),最大值127(2^7-1),默认值0
    byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一
    
    short:16位的,有符号的,以二进制补码表示的整数,最小值(-2^15),最大值(2^15-1),默认值0
    short类型也可以用来替换整数,以节省空间。short的存储空间是int的二分之一
    
    int:32位的,有符号的,以二进制补码表示的整数,最小值(-2^31),最大值(2^31-1),默认是0
    
    long:64位的,有符号的,以二进制补码表示的整数,最小值(-2^63),最大值(2^63-1),默认是0L
    
    float:单精度,32位的,存储大型浮点数组的时候可节省内存空间,默认值0.0f
    
    double:双精度,64位,浮点类型默认的数据类型
    
    boolean:表示一位的信息,默认值false
    

    void:这是另外一种基本类型,但我们无法进行操作

7:引用类型

由类的构造函数创建,所有引用类型的默认值是null,一个引用变量可以用来引用于任何与之兼容的类型。

8:java常量

常量就是一个固定值,使用final标志

byte,int,short,long都可以用十进制,十六进制,八进制来表示,前缀0表示8进制,前缀0X表示16进制

9:java变量

java中,变量在使用前都必须声明

java语言支持的变量类型有:

局部变量:访问修饰符不能用于局部变量,局部变量是在栈上分配的,局部变量没有默认值,必须初始化后,才可以使用。局部变量在方法或者代码块结束时自动销毁

成员变量:在对象创建的时候创建,在对象销毁的时候销毁,实例变量有默认值,可以在声明时指定,也可以在构造方法中指定

类变量:在类中以static关键字声明,无论一个类创建了多少对象,类只拥有类变量的一份拷贝,类变量在程序开始时创建,在程序结束时销毁

10:java修饰符

主要分为两类

访问修饰符/非访问修饰符

访问控制修饰符

    默认的:default,对同一个包内的所有类可见,不在继承范围内

    受保护的:protected,对同一包内的类和所有子类可见

    私有的:只在本类内可见

    共有的:对所有类可见

访问控制和继承

父类中声明为public的方法,子类中也只能声明为public

父类中声明为protected的方法在子类中要么声明成public,要么声明成protected

父类中默认修饰符声明的方法,子类中可以声明为private

父类中声明为private的方法,子类不能继承


final修饰符:

被声明为final 的对象的引用不能指向不同的对象,但是final对象里面的数据可以被改变

abstract修饰符:

如果一个类包含抽象方法,那么该类一定要声明为抽象类。

抽象类可以包含抽象类和抽象方法,抽象方法不能被声明为final,static

transient修饰符:

被transient修饰的变量,不会被持久化(与序列化挂钩)

volatile修饰符:

Volatile修饰的变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存


11:java运算符

算术运算符(+,-,*,/等)、关系运算符(==、!=、<、>等)、位运算符(&,|,^,~,<<、>>、>>>)、逻辑运算符(&&,||,!)、赋值运算符、条件运算符(?:),instanceOf运算符(判断某一对象是否属于某一类型)

&:按位与,都为1时,结果才为1

|:按位或,有一个为1时,结果就为1

^:按位异或,不相同时,结果为1

~:按为翻转每一位

12:java Number类

Integer x=5;

x = x+10;

当x被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后为了是x能进行运算,所以要对x进行拆箱

13:String类

String类是不可改变的,一旦创建了String对象,那他的值就无法改变了。重新赋值并不代表前后位同一个对象

14:StringBuilder与StringBuffer

StringBuffer是线程安全的,StringBuilder不是线程安全的。所以StringBuilder快。

StringBuffer是通过在所有方法上添加synchronized的方式保证线程安全的

15:虚方法

Father f = new Son();

f.say();

这就是虚拟方法调用

16:java数据结构

枚举:Enumeration

位集合:bitSet(实现了一组单独设置和清除的位或标志)

向量:Vector(允许空值,很传统数据非常相似,但是Vector的大小能根据需要动态的变化,也能通过索引访问,创建对象时不必给定大小,它的大小会根据需要动态的变化,如果有指定扩大系数,则为当前大小加系数,如果没有,则变为原来的两倍)

栈:Stack(允许空值)

字典:Dictionary(提供键值对的访问方式)

哈希表:Hashtable(不允许空置,因为需要进行hash操作)

属性:Properties(不允许空值,因为需要进行hash操作)


你可能感兴趣的:(JAVA基础知识点)