Java基础(二)
2. 标识符和数据类型
2.1 Java基本语法单位
2.1.1 空白、注释及语句
-
空白。为了增加可读性,Java程序的元素之间可插入任意数量的空白,编译器将忽略掉多余的空白。形成良好 的程序风格很重要。
-
注释。程序中适当加入注释,会增加程序的可读性。
// 单行注释 /* 单行或多行注释 */ /** 文档注释 */
-
语句、分号和块
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基本数据类型
-
逻辑类型——boolean
boolean类型有两个常量值:true和false。全为小写,计算机内部用8位来表示。
-
字符类型——char
单个字符用char类型表示。一个char表示一个Unicode字符,其值用16位无符号整数表示。char类型的常量值必须用一对单引号('')括起来。
-
整型——byte、short、int、long
在Java中所有的整型量都是有符号数。
-
浮点数——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,不过我们无法直接对它们进行操作。
-
类型转换
- 自动类型转换:位数少的类型转换成位数多的类型。(位数变多,精度提高)
- 强制类型转换:位数多的类型转换成位数少的类型。(位数变少,精度降低甚至出现溢出错误)
各类型所占用的位数从短到长依次为:
byte——>short——>char——>int——>long——>float——>double
-
变量的定义和赋值
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有关的关键字
-
限定访问权限的修饰符
修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包 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 -
存储方式修饰符
static既可以修饰成员变量,也可以修饰成员方法,表示所说明的对象是静态的。静态成员可以被当前类的所有对象共享。存储的地方也不一样。
2.5.3 与继承有关的关键字
-
继承,是指特殊类对象共享更一般类对象的状态及行为(变量及方法),也即子类继承父类的特征(成员变量、成员方法)。
此外,继承还有以下含义:
- 子类除了拥有父类的属性和方法,还可以增加自己的属性和方法。
- 子类对象可以响应父类中的方法表示的消息。
-
与继承有关的关键字
- 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 对象的创建
-
对象引用
Java系统在内存中为实例分配相应的空间后会将存储地址返回,称此存储地址为对象的引用(reference),也可以称为引用变量。
格式:
类名 变量名;
eg:
People p;
这里的p即为引用。未初始化之前,p的值为null;实例化后,p会存储对象在内存中的地址,也称指向对象。
-
对象实例化
格式:
变量名 = new 类名(参数列表);
-
对象的使用
格式:
对象引用.成员数据 对象引用.成员方法(参数列表)
-
举例
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(); } }
原文地址:https://www.cnblogs.com/CodeKingdom/p/12773855.html
- KNN实现手写数字识别
- softmax分类算法原理(用python实现)
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络
- 博客园自定义皮肤扁平化设计
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week3 目标检测
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week2深度卷积神经网络 实例探究
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week1 卷积神经网络基础知识介绍
- Udacity并行计算课程笔记-The GPU Hardware and Parallel Communication Patterns
- DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)
- DeepLearning.ai学习笔记(三)结构化机器学习项目--week1 机器学习策略
- coursera 视频总是缓冲或者无法观看的解决办法
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--week3 超参数调试、Batch正则化和程序框架
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络
- Andrew Ng机器学习课程笔记--week3(逻辑回归&正则化参数)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 【MySQL】删库别着急跑路(一)--Xtrabackup的原理及使用
- 微服务[学成在线] day11:基于 ElasticSearch 构建搜索服务
- 【MySQL】删库别着急跑路(二)--mysqldump的使用
- 【MySQL】删库别着急跑路(三)--binlog2sql闪回工具的使用
- 微服务[学成在线] day10:课程发布、ElasticSearch
- MySql监控分析视图-sys schema
- 如何使用PyMysql操作MySQL数据库?
- 【redis】部署及参数详解(吐血整理,建议收藏)
- 【MySQL性能调优】-关于索引的那些事儿(一)
- 【索引潜规则】-覆盖索引、ICP、MRR详解
- 微服务[学成在线] day12:基于 Nuxt.js 构建搜索前端工程
- 别找了,你要的Redis命令都在这了
- 微服务[学成在线] day13:使用FFmpeg进行格式转换以及m3u8文件生成、文件分块上传接口实现
- GTID,你了解多少?
- Spring Boot 拓展SpringMVC