Java基础快速复习(一)

本文是Java基础的复习资料,涵盖了Java的基础语法、类与对象的细节,包括类中的变量和方法、源文件声明规则、数据类型、变量、访问控制和非访问修饰符,以及循环和选择结构。重点讲解了类的构造方法、实例变量和静态变量的使用,以及Java的访问控制和非访问修饰符的作用。
摘要由CSDN通过智能技术生成

摘抄整理于W3Cschool的Java教程,比较适用于学过Java但一段时间没有接触的复习回顾。

1 Java基础语法

  1. Java是大小写敏感的,这意味着Student和student是不同的
  2. 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词首字母应该大写,例如MyFirstClass
  3. 方法名:方法名首字母都应该小写(除构造方法外)。如果方法名由若干单词组成,那么每个单词首字母都应该大写
  4. 源文件名:源文件名必须和类名相同。当保存文件时,应该选择类名作为文件名保存。文件名的后缀为.java。
  5. 主方法入口:所有的Java程序由public static void main(String args[])方法开始执行。
  6. 标识符:所有的标识符首字母只能是英文字母或者$或者_,不能是数字
  7. 访问控制修饰符:default、public、protected、private
  8. 非访问控制修饰符:final、abstract、static、synchronized、和voliate。

2 Java对象和类

2.1 类中的变量和方法

  1. 局部变量
    在方法、构造方法或者语句块中定义的变量。方法结束后,变量就会自动销毁。
  2. 成员变量
    定义在类中,方法体外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句访问。
  3. 类变量
    必须声明在类中,方法体之外,但必须声明为static类型。
  4. 一个类可以拥有多个方法。
  5. 每个类都由构造方法,若没有显示的定义构造方法,则Java编译器会为该类提供一个默认构造方法。在创建一个对象的时候,一个类至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
public class Dog{
      public Dog(){
      }
      public Dog(String name){
      }
}

2.2 实例

public class Pubby{
         int Age;
         public Pubby(String name){
         System.out.println("Passed Name is:"+name);
         }
         public void setAge(int age){
                  Age=age;
         }
         public int getAge(){
                  System.out.println("Puppy's age is:"+Age);
         }
         public static void main(String []args){
         /*创建对象*/
         Puppy myPuppy=new Puppy("Mike");
         /*通过方法设定age*/
         myPuppy.setAge(2);
         /*调用另一个方法获取Age*/
         myPuppy.getAge();
         /*访问成员变量*/
         Sysstem.out.println("Value:"+myPuppy.Age);
         }
}

编译并运行上面的程序,产生如下结果:

Passed Name is:Mike
Puppy's age is:2
Value:2

3 源文件声明规则

  • 一个源文件中只能有一个public类。
  • 一个源文件可以有多个非public类。
  • 源文件的名称应该和public类的类名保持一致。
  • 源文件内容顺序:package语句、import语句、类定义

4 Java数据类型

4.1 内置数据类型

在这里插入图片描述

4.2 引用数据类型

  • 引用类型变量由类的构造函数创建,可以使用它们访问所引用的对象。这些变量在声明时被指定为一个特定的类型,比如Employee、Pubby等。变量一旦声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用与任何与之兼容的类型。
  • 例子:Animal animal = new Animal(“giraffe”)

4.3 常量

常量指不能改变的量。 在Java中用final标志,声明方式和变量类似:

final double PI = 3.1415927;

为了便于识别,通常使用大写字母表示常量。

4.4 特殊字符

符号 字符含义
\n 换行 (0x0a)
\r 回车 (0x0d)
\f 换页符(0x0c)
\b 退格 (0x08)
\s 空格 (0x20)
\t 制表符
" 双引号
’ 单引号
\ 反斜杠
\ddd 八进制字符 (ddd)
\uxxxx 16进制Unicode字符 (xxxx)

5 Java变量

5.1 局部变量

  • 局部变量声明在方法、构造方法或者语句块中;
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  • 访问修饰符不能用于局部变量;
  • 局部变量只在声明它的方法、构造方法或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

5.2 实例变量(成员变量)

  • 声明在一个类中,但在方法、构造方法和语句块之外;
  • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  • 实例变量可以声明在使用前或者使用后;
  • 访问修饰符可以修饰实例变量;
  • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名,如:ObejectReference.VariableName。
    实例:
import java.io.*;
public class Employee{
   // 这个成员变量对子类可见
   public String name;
   // 私有变量,仅在该类可见
   private double salary;
   //在构造器中对name赋值
   public Employee (String empName){
      name = empName;
   }
   //设定salary的值
   public void setSalary(double empSal){
      salary = empSal;
   }  
   // 打印信息
   public void printEmp(){
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]){
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

5.3 类变量(静态变量)

  • 类变量也称为静态变量,在类中以static关键字声明,但必须在方法、构造方法和语句块之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
  • 静态变量在程序开始时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
  • 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为public static final类型时,类变量名称必须使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
    实例:
import java.io.*;
public class Employee{
   //salary是静态的私有变量
   private static double salary;
   // DEPARTMENT是一个常量
   public static final String DEPARTMENT = "Development ";
   public static void main(String args[]){
      salary = 1000;
      System.out.println(DEPARTMENT+"average salary:"+salary);
   }
}

运行结果:

Development average salary:1000

注意:如果其他类想要访问该变量,可以这样访问:Employee.DEPARTMENT。

6 访问控制修饰符

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。支持4种不同的访问权限。

  • 默认的,在同一包内可见,不使用任何修饰符
  • 私有的,以private修饰,在同一类中可见
  • 受保护的,以protected修饰,对同一包内的类和不同包的子类可见
  • 公有的,以public修饰,对所有类可见

类和接口不能由private或者protected修饰。
请注意以下方法继承的规则:

  • 父类中声明为public的方法在子类中也必须为public。
  • 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。
  • 父类中默认修饰符声明的方法,能够在子类中声明为private。
  • 父类中声明为private的方法,不能够被继承。

7 非访问修饰符

为了实现一些其他的功能,Java也提供了许多非访问修饰符。

7.1 static

  • 无论一个类实例化多少对象,它的静态变量只有一份拷贝;静态变量也被称为类变量;局部变量不能被声明为static变量。
  • static关键字用来声明独立于对象的静态方法;静态方法不能使用类的非静态变量。

7.2 final

  • 用来修饰类、方法和变量
  • final修饰的类不能够被继承
  • final修饰的方法可以被子类继承,但不能被子类修改
  • final修饰的变量能被显式地初始化并且只能初始化一次。被声明为final的对象的引用不能指向不同的对象。但是final对象里的数据可以被改变。也就是说final对象的引用不能改变,但是里面的值可以改变。final修饰符通常和static修饰符一起使用来创建类常量。

7.3 abstract

  • 用来创建抽象类和抽象方法。
  • 抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
  • 抽象方法不能被声明成final和static。
  • 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。
  • 抽象类可以不包含抽象方法。抽象方法的声明以分号结尾,例如:public abstract sample();

7.4 synchronized

  • synchronized关键字声明的方法同一时间只能被一个线程访问。
  • Synchronized修饰符可以应用于四个访问修饰符。

7.5 volatile

  • volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

8 循环

  • while;do…while;for简单,不赘述。
  • break主要用在循环语句或者switch语句中,跳出最里层的循环,并且继续执行该循环下面的语句。
  • continue适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在for循环中,continue语句使程序立即跳转到更新语句。在while或者do…while循环中,程序立即跳转到布尔表达式的判断语句。

9 选择

  1. if else简单
  2. switch:
  • case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  • 当变量的值与case语句的值相等时,那么case语句之后的语句开始执行,直到break语句出现才会跳出switch语句。
  • 当遇到break语句时,switch语句终止。程序跳转到switch语句后面的语句执行。case语句不必须要包含break语句。如果没有break语句出现,程序会继续执行下一条case语句,直到出现break语句。
  • switch语句可以包含一个default分支,该分支必须是switch语句的最后一个分支。default在没有case语句的值和变量值相等的时候执行。default分支不需要break语句。
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值