JAVA知识点一

声明:以下所有内容来自对https://m.runoob.com中Java教程的学习
1. 标识符的组成部分:较C语言多了一个$符号,即字母数字下划线$,且不能以数字开头
2. 两类修饰符:
(1)访问控制:default, public, protected, private
(2)非访问控制:final, abstract, strictfp
3. 几种数据类型:
(1)局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。不可以被访问修饰符修饰。
(2)类变量(静态变量):声明在类中,方法体之外,但必须声明为static类型。使用完全限定名访问。被声明为public static final类型时,名称一般建议使用大写字母。如果不是,命名方式与实例变量以及局部变量的命名方式一致。
(3)成员变量(非静态变量,实例变量):区别于类变量中的static.对象在被创建时,就被初始化(不赋值也有初始值0,false,null)。可以被访问修饰符修饰。可以直接通过变量名访问,但在静态方法以及其他类中,就应该使用完全限定名。
4. 基本类型较C语言多出boolean, byte
5. Java源程序与编译形运行区别

6. 一个类可以有多个构造方法,且构造方法的名称必须与类同名,在创建一个对象的时候,至少要调用一个构造方法。
7. 创建一个对象需要三步:
(1) 声明:声明一个对象,包括对象名称和对象类型
(2) 实例化:使用关键字new来创建一个对象
(3) 初始化:使用new创建对象时,会调用构造方法初始化对象
8. 源文件声明原则:
(1) 一个源文件中只能有一个public类
(2) 一个源文件可以有多个非public类
(3) 源文件的名称应该和public类的类名保持一致
(4) 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
(5) 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面
(6) import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
9. package : 主要用来对类和接口进行分类,类比于C语言中的库?
import:类比于C语言中的头文件?
10. 除了8种基本类型外,还有引用数据类型:类比于C语言中的指针
11. Java常量在程序运行时是不能被修改的,在Java中使用final关键字来修饰常量,声明方式和变量方式类似:
final double PI = 3.1415927;
12. 定义float类型时必须在数字后面跟上F或者f.
13. 访问控制类修饰符的访问权限:

14. private : 变量和构造方法只能被所属类访问,并且类和接口不能声明为private.
15. public: 被声明为public的类、方法、构造方法和接口能够被任何其他类访问。如果几个相互访问的public类肺部再不同的包中,则需要导入相应的public类所在的包。由于类的继承性,类所有的共有方法和变量都能被子类集成。Java程序的main()方法必须设置成共有的,否则,Java解释器将不能运行该类。
16. protected两点说明:
(1) 子类与基类在同一包中:被声明为Protected的变量、方法和构造器能被同一个包中的任何其他类访问;
(2) 子类于基类不在同一包中:在子类中,子类的实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。protected访问修饰符不能修饰类和接口,方法和成员变量能够声明为protected,但是接口的成员变量和成员方法不能声明为protected.子类能访问protected修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。
17. 访问控制和继承
(1) 父类中声明为public的方法在子类中必须为public
(2) 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public,不能声明为private
(3) 父类中声明为private的方法,不能够被继承。
18. 非访问修饰符
(1) static修饰符,用来修饰类方法和类变量。
静态变量类似于C语言中,静态方法:static关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。对类变量和方法的访问可以直接使用classname.variablename 和 classname.methodname 的方式访问。
(2) final修饰符,用来修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。final变量能被显示的初始化并且只能初始化一次。被声明为final的对象的引用不能指向不同的对象。但是final对象里的数据可以被改变。也就是说final对象的引用不能改变,但是里面的值可以改变。final方法类中的final方法可以被子类继承,但是不能被子类修改。声明final方法的主要目的是防止该方法的内容被修改。final类不能被继承,没有类能够继承final类的任何特性。
(3) abstract修饰符,用来创建抽象类和抽象方法。
抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。一个类不能同时被abstract和final修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。

abstract class Caravan {
private double price;
private String model;
private String year;
public abstract void goFast();//抽象方法
public abstract void changeColor();
}

抽象方法是一种没有任何实现的方法,该方法的具体实现由子类提供。抽象方法不能被声明成final和static.任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。抽象方法的声明以份好结尾,例如public abstract sample();
(4) synchronized和volatile修饰符,主要用线程的编程。synchronized关键字声明的方法同一时间只能被一个线程访问。synchronized修饰符可以应用于四个访问修饰符。
volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值会写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
(5) transient修饰符:序列化的对象包含被transient修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。
19. Java运算符
(1) 参照C语言运算符
(2) Instanceof 运算符:该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
instanceof 运算符使用格式如下:
(Object reference variable) instanceof (class/interface type)
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。
例如:
String name = "Rafe";
boolean result = name instanceof String;//由于name是String类型,所以返回真

如果被比较的对象兼容于右侧类型,该运算符仍然返回true.

class Vehicle {}
public class Car extends Vehicle {
   public static void main(String[] args){
      Vehicle a = new Car();
      boolean result =  a instanceof Car;
      System.out.println( result);
   }
}
  1. Java运算符优先级
  2. Java循环结构
    (1) 参照C语言循环结构
    (2) Java增强for 循环
    Java5引入了一种主要用于数组的增强型for循环。
    Java增强for循环语法格式如下:
    for(声明语句 : 表达式)
    {
    ......//代码句子
    }

    声明语句:声明信的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定再循环语句块,其值与此时数组元素的值相等。
    表达式:表达式是要访问的数组明,或者返回值为数组的方法。
    实例:
public class Test {
    public static void main(String []args) {
        int []numbers = {10,20,30,40,50};
        for(int x : numbers) {
            System.out.println(x);
            System.out.println(",");
        }
        System.out.println("\n");
        String []names = {"James","Larry","Tom","Rafe"};
        for (String name : names) {
            System.out.println(name);
            System.out.println(",");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值