Java 基础语法笔记

来源:互联网 发布:网络统考英语过不去 编辑:程序博客网 时间:2024/06/05 17:13

参考 http://www.runoob.com/java/java-modifier-types.html

一个Java程序可以认为是一系列对象的集

  • 运行 编译:> javac xxx.java,运行:> java xxx

  • 类名首字母大写

  • 方法 方法名首字母小写

  • 源文件名 和类名相同

  • 主方法入口

    public static void main(String []args)

  • 标识符

    • 开头: A-Z,a-z,$,_
  • 修饰符

    • 访问控制修饰符:default, public, protected, private
    • 非访问控制修饰符:final, abstract, strictfp

对象与类

对象 :类的实例

  • 状态
  • 行为

模版,一类对象的状态和行为

public class Dog{  //public 对子类可见, private在该类可见  String breed;//实例变量  int age;  String color;  static int all=0;//类变量  //方法  void barking(){}  void hungry(){}  void sleeping(){}  public void setage(int dogage){    age = dogage;  }  public int getage(){    System.out.println("age is "+age);  }  //构造方法  public Dog(){}  public Dog(String name){    System.out.println("Dog's name is "+ name);  }  //main  public static void main(String []args){    //创建对象    Dog mydog = new Dog("tommy");    mydog.setage(2);    mydog.getage();  }}

创建对象

  • 声明对象名称、类型

  • 实例化:用new创建一个对象

  • 初始化:new 创建时调用构造方法初始化

    Dog mydog = new Dog("tommy")

    访问实例变量和方法

变量类型

type identifier [ = value][, identifier [= value] ...] ;

  • 类变量:独立于方法之外的变量,用static修饰,静态变量
    • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
    • 静态变量在程序开始时创建,在程序结束时销毁。
    • 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。
    • 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
  • 实例变量:独立于方法之外的变量,没有static修饰
    • 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。
    • 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量
  • 局部变量:类方法中变量

Java 修饰符

访问控制修饰符

  • 默认的,default,在同一包内可见,不使用任何修饰符。
  • 私有的, private ,在同一类内可见。
  • 共有的, public ,对所有类可见。
  • 受保护的, protected ,对同一包内的类和所有子类可见。protected 访问修饰符不能修饰类和接口

非访问控制修饰符

  • static
  • final
    • 能被显式地初始化并且只能初始化一次。
    • 被声明为 final 的对象的引用不能指向不同的对象。
    • 值可以改变
  • abstract
    • 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
    • 如果一个类包含抽象方法,那么该类一定要声明为抽象类。
    • 抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
    • 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
public abstract class SuperClass{  abstract viod m();//abstract function}class SubCass extends SuperClass{  void m(){    ....  }}
  • synchronized 同一时间只能被一个线程访问
  • transient 序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
  • volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

结构

循环

  • while

  • for

  • do…while

    do{ ...}while(布尔表达式) //即使不满足条件也至少执行一次
  • 用于数组的 增强for

     String [] names ={"James", "Larry", "Tom", "Lacy"};      for( String name : names ) { //声明语句:表达式         System.out.print( name );         System.out.print(",");      }
  • break
  • continue

Java 流(stream),File, IO

控制台输入

Java 的控制台输入由 System.in 完成。

创建 BufferedReader:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

Java 接口

  • 接口可以被实现,无法被实例化
  • 一个接口可以有多个方法。
  • 接口文件保存在 .java 结尾的文件中,文件名使用接口名。
  • 接口的字节码文件保存在 .class 结尾的文件中。
  • 接口相应的字节码文件必须在与包名称相匹配的目录结构中。
  • 接口中所有的方法必须是抽象方法。
  • 接口不是被类继承了,而是要被类实现。

声明

[可见度] interface 接口名称 [extends 其他的类名] {        // 声明变量        // 抽象方法}//隐式抽象,方法公有import java.lang.*;//引入包/* 文件名 : NameOfInterface.java */public interface NameOfInterface{   //任何类型 final, static 字段   //抽象方法}

Java package

Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等

package pkg1[.pkg2[.pkg3…]];

一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问保护和命名空间管理的功能。

以下是一些 Java 中的包:

  • java.lang-打包基础的类
  • java.io-包含输入输出功能的函数

  • import import package1[.package2…].(classname|*);

自定义Java标注

  • @Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。
  • @Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上.
  • @SuppressWarnings:这一个类型可以来暂时把一些警告信息消息关闭.
原创粉丝点击