Java基础(二)

时间:2020-04-25
本文章向大家介绍Java基础(二),主要包括Java基础(二)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

2. 标识符和数据类型

2.1 Java基本语法单位

2.1.1 空白、注释及语句

  1. 空白。为了增加可读性,Java程序的元素之间可插入任意数量的空白,编译器将忽略掉多余的空白。形成良好 的程序风格很重要。

  2. 注释。程序中适当加入注释,会增加程序的可读性。

    // 单行注释
    /* 单行或多行注释 */
    /** 文档注释 */
    
  3. 语句、分号和块

    Java中的语句是最小的执行单位,各语句间以英文半角分号";"分隔。一个语句可写在连续的若干行内。

    花括号"{}"包含的一系列语句称为语句块,简称块。语句块可以嵌套。在词法上,块被当作一个语句。

2.1.2 关键字

Java有许多关键字,关键字也称为保留字,不能用其作为标识符。

关键字 含义
abstract 表明类或者成员方法具有抽象属性
assert 断言,用来进行程序调试
boolean 基本数据类型之一,声明布尔类型的关键字
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class 声明一个类
const 保留关键字,没有具体含义
continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
instanceof 用来测试一个对象是否是指定类型的实例对象
int 基本数据类型之一,整数类型
interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new 用来创建新实例对象
package
private 一种访问控制方式:私用模式
protected 一种访问控制方式:保护模式
public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754)算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中

2.1.3 标识符

在Java语言中,标识符是以字母、下划线(_)或美元符号($)开头,由字母、数字、下划线(_)或美元符号($)组成的字符串。尽量避免使用下划线、美元符号。标识符区分大小写,理论上没有长度限制。在程序中,标识符可作为变量名、方法名、接口名、类名等。

实际上,Java源代码使用的是Unicode码,而非ASCII码。

2.2 Java编码体系

命名约定:

  • 类---多为名词,驼峰命名法,类名首字母大写。
  • 接口---多为名词,驼峰命名法,接口名首字母大写。
  • 方法---多为动词,驼峰命名法,方法名首字母小写。
  • 常量---全部大写,单词与单词之间用下划线分隔。
  • 变量---驼峰命名法,变量名首字母小写。

在遵守以上命名约定的基础上,尽量做到望文知意。

2.3 Java基本数据类型

  1. 逻辑类型——boolean

    boolean类型有两个常量值:true和false。全为小写,计算机内部用8位来表示。

  2. 字符类型——char

    单个字符用char类型表示。一个char表示一个Unicode字符,其值用16位无符号整数表示。char类型的常量值必须用一对单引号('')括起来。

  3. 整型——byte、short、int、long

    在Java中所有的整型量都是有符号数。

  4. 浮点数——float、double

    同样,也都是有符号数。

注意各种类型变量对应的字面量值的书写方式:

//字节型变量
byte byteValue = 55;
//短整型变量
short shortVlaue = 20000;
//整型变量
int intValue = -70000;
//长整型变量
long lonfVlaue = 99999999;
//浮点型变量
float floatValue = -3.1415927f;
//双精度浮点型变量
double doubleValue = -9.9999999999d;
//字符型变量
char charValue = 'A';
//布尔型变量
boolean booleanValue = true;

几种基本数据类型对应的包装类、二进制位数以及最大、最小值:

package javaBase;

public class PrivitateTypeShow {
	
	public static void main(String[] args) {
		//byte
		System.out.println("基本数据类型:byte");
		System.out.println("包装类:java.lang.Byte");
		System.out.println("二进制位数:" + Byte.SIZE);
		System.out.println("最小值:" + Byte.MIN_VALUE);
		System.out.println("最大值:" + Byte.MAX_VALUE);
		System.out.println("========================================");
		
		//short
		System.out.println("基本数据类型:short");
		System.out.println("包装类:java.lang.Short");
		System.out.println("二进制位数:" + Short.SIZE);
		System.out.println("最小值:" + Short.MIN_VALUE);
		System.out.println("最大值:" + Short.MAX_VALUE);
		System.out.println("========================================");
		
		//int
		System.out.println("基本数据类型:int");
		System.out.println("包装类:java.lang.Integer");
		System.out.println("二进制位数:" + Integer.SIZE);
		System.out.println("最小值:" + Integer.MIN_VALUE);
		System.out.println("最大值:" + Integer.MAX_VALUE);
		System.out.println("========================================");
		
		//long
		System.out.println("基本数据类型:long");
		System.out.println("包装类:java.lang.Long");
		System.out.println("二进制位数:" + Long.SIZE);
		System.out.println("最小值:" + Long.MIN_VALUE);
		System.out.println("最大值:" + Long.MAX_VALUE);
		System.out.println("========================================");
		
		//float
		System.out.println("基本数据类型:float");
		System.out.println("包装类:java.lang.Float");
		System.out.println("二进制位数:" + Float.SIZE);
		System.out.println("最小值:" + Float.MIN_VALUE);
		System.out.println("最大值:" + Float.MAX_VALUE);
		System.out.println("========================================");
		
		//double
		System.out.println("基本数据类型:double");
		System.out.println("包装类:java.lang.Double");
		System.out.println("二进制位数:" + Double.SIZE);
		System.out.println("最小值:" + Double.MIN_VALUE);
		System.out.println("最大值:" + Double.MAX_VALUE);
		System.out.println("========================================");
		
		// char  
        System.out.println("基本类型:");  
        System.out.println("包装类:java.lang.Character");
        System.out.println("char 二进制位数:" + Character.SIZE);
        // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
        System.out.println("最小值:Character.MIN_VALUE="  
                + (int) Character.MIN_VALUE);  
        // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
        System.out.println("最大值:Character.MAX_VALUE="  
                + (int) Character.MAX_VALUE); 
	}

}

运行结果:

基本数据类型:byte
包装类:java.lang.Byte
二进制位数:8
最小值:-128
最大值:127
========================================
基本数据类型:short
包装类:java.lang.Short
二进制位数:16
最小值:-32768
最大值:32767
========================================
基本数据类型:int
包装类:java.lang.Integer
二进制位数:32
最小值:-2147483648
最大值:2147483647
========================================
基本数据类型:long
包装类:java.lang.Long
二进制位数:64
最小值:-9223372036854775808
最大值:9223372036854775807
========================================
基本数据类型:float
包装类:java.lang.Float
二进制位数:32
最小值:1.4E-45
最大值:3.4028235E38
========================================
基本数据类型:double
包装类:java.lang.Double
二进制位数:64
最小值:4.9E-324
最大值:1.7976931348623157E308
========================================
基本类型:
包装类:java.lang.Character
char 二进制位数:16
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

  1. 类型转换

    • 自动类型转换:位数少的类型转换成位数多的类型。(位数变多,精度提高)
    • 强制类型转换:位数多的类型转换成位数少的类型。(位数变少,精度降低甚至出现溢出错误)

    各类型所占用的位数从短到长依次为:

    byte——>short——>char——>int——>long——>float——>double
    
  2. 变量的定义和赋值

    	public static void main(String[] args) {
    		
    		//定义整形变量intNumber
    		int intNumber;
    		//给整形变量intNumber赋值
    		intNumber = 110;
    		
    		//定义并给双精度类型变量doubleNumber赋值
    		double doubleNumber = 3.1415926d;
    
    	}
    

2.4 复合数据类型

Java是面向对象的程序设计语言,它为用户提供的复合数据类型就是类、数组以及接口。我们可自行定义。

2.5 类和对象的初步介绍

2.5.1 类的定义

格式:

修饰符 class 类名 [extends 父类名] {
	类型 成员变量1;
	类型 成员变量2;
	
	修饰符 类型 成员方法1 (参数列表) {
		类型 局部变量;
		方法体
	}
	
	修饰符 类型 成员方法2 (参数列表) {
		类型 局部变量;
		方法体
	}
}

类,主要由成员变量和成员方法构成。

extends关键字表示继承,如若没有明确写出其父类,则其默认父类为Object类。

2.5.2 Java中与OOP有关的关键字

  1. 限定访问权限的修饰符

    修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包
    public Y Y Y Y Y
    protected Y Y Y Y/N(说明 N
    default Y Y Y N N
    private Y N N N N
  2. 存储方式修饰符

    static既可以修饰成员变量,也可以修饰成员方法,表示所说明的对象是静态的。静态成员可以被当前类的所有对象共享。存储的地方也不一样。

2.5.3 与继承有关的关键字

  1. 继承,是指特殊类对象共享更一般类对象的状态及行为(变量及方法),也即子类继承父类的特征(成员变量、成员方法)。

    此外,继承还有以下含义:

    • 子类除了拥有父类的属性和方法,还可以增加自己的属性和方法。
    • 子类对象可以响应父类中的方法表示的消息。
  2. 与继承有关的关键字

    • final——用final修饰的类不能再被继承,用final修饰的变量为常量,不能再被改变。
    • abstract——用abstract可以修饰类、方法,但是只有抽象的原型说明,不可以有方法体。
    • this——代指本类。
    • super——代指父类。
//父类
public class People {
	
	String name;
	
	int age;
	
	void eat() {
		System.out.println("吃饭");
	}

}

//子类
public class Boy extends People{
	
	String sex = "男";

	public static void main(String[] args) {
		Boy xiaoming = new Boy();
		xiaoming.eat();

	}

}

Boy类继承自People类,拥有父类的name、eat()等成员变量、成员方法,并且Boy类自身又新增了sex成员变量。

2.5.5 对象的创建

  1. 对象引用

    Java系统在内存中为实例分配相应的空间后会将存储地址返回,称此存储地址为对象的引用(reference),也可以称为引用变量。

    格式:

    类名 变量名;
    

    eg:

    People p;
    

    这里的p即为引用。未初始化之前,p的值为null;实例化后,p会存储对象在内存中的地址,也称指向对象。

  2. 对象实例化

    格式:

    变量名 = new 类名(参数列表);
    
  3. 对象的使用

    格式:

    对象引用.成员数据
    对象引用.成员方法(参数列表)
    
  4. 举例

    public class People {
    	
    	String name;
    	
    	int age;
    	
    	void eat() {
    		System.out.println("吃饭");
    	}
    	
    	public static void main(String[] args) {
    		//声明变量zhangsan,并为该引用分配空间,此时其值为null
    		People zhangsan;
    		//实例化对象,并使引用指向对象的物理地址
    		zhangsan = new People();
    		//调用对象的成员方法
    		zhangsan.eat();
    	}
    
    }
    
    

$flag 上一页 下一页