Java基础语法

Java基础语法


以下只记录容易混淆的概念和容易忘记的语法

Java核心机制

  • Java虚拟机:以字节码为机器指令;不同平台有不同虚拟机;实现跨平台运行,”一次编译,随处运行”。
  • 垃圾收集机制:一种系统级线程跟踪存储空间分配情况,在JVM空闲时,进行回收,自动进行,无法精确控制和干预。

Java语法注意

1、一个源文件.java最多只能有一个public类,且源文件名称和类名相同
2、public static void main(String[] args) {}为应用程序执行入口
3、Java语言严格区分大小写,每条语句以”;”结尾
4、注释

//单行注释

/*
多行注释
*/

/**
  *可以被doc工具解析的多行注释
  **/

5、标识符命名规则

  • 标识符由字母、”_”、”$”或数字组成
  • 标识符应以字母、”_”、”$”开头
  • 标识符大小写敏感,长度无限制
  • 标识符选取因注意”见名知意”且不能与Java关键字相同

6、约定俗成的命名规则

  • 类名的首字母大写
  • 变量名和方法名的首字母小写
  • 运用驼峰标识

Java数据类型划分

Java数据类型

Java逻辑运算符

(逻辑非!)(逻辑与&)(逻辑或|)(短路与&&)(短路或||)(异或^)

ab!aa&ba|ba&&ba||ba^b
truetruefalsetruetruetruetruefalse
truefalsefalsefalsetruefalsefalsetrue
falsetruetruefalsetruefalsefalsetrue
falsefalsetruefalsefalsefalsefalsefalse

Java三目条件运算符

x?y:z
x为boolean类型表达式,x=true,则整个表达式为y;x=false,则整个表达式为z

int x = 5;
int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
int score = 80;
String level = score < 60 ? "不及格" : "及格";

Java分支循环

break;用于终止某个语句块执行,用在循环体中,可以强制退出循环
continue;用于跳过循环体中continue之后语句直接进入下一次循环

条件语句
  • if
  • if…else
  • if…else if
  • if…else if…else if…else
  • switch
    小心case穿透,使用break;
    多个case可以合并到一起,default不推荐省略
循环语句
  • for
    for(表达式1;表达式2;表达式3){语句;…;}
    首先计算表达式1,接着执行表达式2=true,则执行语句,接着计算表达式3,再判断表达式2直到表达式2为false
  • while
  • do…while

Java面向对象

构造方法

  • 构造方法是是用来初始化对象的方法
  • 构造方法与类同名没有返回值
  • 没有指定构造函数时,编译器为类自动添加类名(){}的构造函数

方法的重载和重写

  • overload方法的重载指一个类中定义有相同方法名,但参数不同(参数个数或者类型)
  • 构造方法也可以重载
  • override子类可以根据需要对从基类中继承的方法进行重写,重写的方法和基类一样,建议拷贝,重写的方法不能使用比被重写方法更严格的访问权限

final关键字

  • final的变量值不能够被改变-成员变量,局部变量(形参)
  • final的方法不能够被重写
  • final的类不能够被继承

static关键字

  • 类中使用static声明静态成员变量,在第一次使用时初始化,该类所有对象公用一份
  • 类中static声明的静态方法,不可访问非static成员
  • 推荐通过类名(不需要实例化)用访问静态成员,对象引用也可以

this关键字

  • this可以看做一个变量,它的值是当前对象的引用
  • 在类的方法中使用this=使用该方法对象的引用
  • 可以使用this处理方法中成员变量和参数重名的情况,比如构造方法

super关键字

  • 类中使用super引用基类
  • 子类的构造必须调用基类的构造方法,弱未显示调用,则默认调用无参构造方法
  • 子类可以使用super(args_list)调用基类的构造方法,如果调用super,必须写在第一行
  • 使用this(args_list)时调用本类另外的构造方法

Java访问控制

修饰符类内部同一个包子类任何地方
privateyes
defaultyesyes
protectedyesyesyes
publicyesyesyesyes

Object类

Object类是所有Java类的根基类,未使用extends,则默认为继承Object类

toString()方法

  • 在进行String与其它类型数据连接操作时System.out.println(“info”+person),将自动调用该person对象的toString()方法
  • 可根据需要重写toString()方法

equals()方法

  • 定义对象是否相等的逻辑
  • Object的equals方法比较的是两个对象的引用
  • String,Date等JDK已经重写了equals()方法,所以两个对象内容相等返回true
    重写方法示例
public boolean equals(Object obj) {
    if(obj == null) return false;
    else {
        if(obj instanceof Cat) {
            Cat c = (Cat)obj;
            if(c.color == this.color && c.height == this.height 
            && c.weight ==this.weight) {
                    return true;
            }
        }
    }
    return false;
}

对象转型(casting)

  • 一个基类的引用类型变量可以指向其子类对象
  • 一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)
  • 可以使用引用变量instanceof类名来判断该引用变量锁指向的对象是否属于该类或其子类
  • 向上转型(upcasting): 子类 –>基类
  • 向x下转型(downcasting):基类 –>子类

多态(动态绑定)

  • 动态绑定是指在执行期间(而非编译期)判断所引用的实际类型,根据实际类型调用其相应方法
  • 继承、重写、基类引用指向子类对象

抽象类abstract和接口Interface

  • abstract修饰类为抽象类,abstract修饰方法为抽象方法
  • 含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写
  • 抽象类不能被实例化,抽象方法只需声明,不需实现
  • 接口是一种特殊抽象类,没有变量和方法的实现
  • 接口Interface是(只能是public)抽象方法和(只能是public static final)常量值定义的集合
  • 多个无关的类可以实现同一个接口,一个类也可以实现多个无关的接口,接口与实现类之间存在多态性
  • 接口可以自己成其它接口,并添加新的属性和抽象方法

JDK中主要包介绍

  • java.lang:包含一些Java核心类,如String、Math、Integer、System和Thread,不需导入即可使用
  • java.util:包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数、集合类等
  • java.io:提供多种输入/输出功能的类
  • java.net:执行与网络相关的类
  • java.applet:applet运行所需要的类
  • java.awt:构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形化界面(GUI)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值