Java SE学习(三)之Java的基础语法(上)

Java的基础语法(上)

要学习一门程序设计语言,首先必须得学习它的语法,这部分内容对于大部分人来说是非常枯燥的,因为要记忆的内容非常多,但是要想学好 Java,就必须了解这部分的内容。语法格式只是学习时最基础的知识,在实际的开发中,需要根据程序的需要,使用恰当的格式去实现程序逻辑,所以语法一定要熟练。这部分内容对于具有 C/C++ 编程经验的程序员来说,只需要快速的浏览一下,注意其中的差异就行了。

注释

注释(comment)是对代码功能和用途的说明。在程序中编写适当的注释,将使程序代码更容易阅读,增强代码的可维护性。与大多数程序程序设计语言一样,Java 中的注释也不会出现在可执行程序(即 .class 文件)中。因此,可以在源程序中根据需要添加任意多的注释,而不用担心代码会膨胀。

单行注释

单行注释是最常用的注释方式,只需要在要注释的内容前面加上 // 即可。例如:

// hello world

注意:单行注释从两个斜线开始到本行结束都是注释的内容,注释内容不能换行。

多行注释

多行注释可以将任意多行的内容注释,一般用于说明比较复杂的内容,只需要将需要注释的内容用 /**/ 包围起来。例如:

/*
    hello
    world
*/

注意:多行注释不能嵌套使用。

文档注释

文档注释可以自动地生成文档,是 Java 的特色注释格式,这种注释以 /** 开头,以 */ 结束。例如:

/**
    @version v1.0
    @author Lucky Light
*/

关键字

所谓关键字就是被 Java 语言赋予特殊含义,具有专门用途的单词,比如之前接触的 class,public,static等均为 Java 预设的关键字。组成关键字的字母全部都是小写,且不能用作常量、变量和其他标识符的名字。

常见关键字

关键字 关键字 关键字 关键字
abstract assert boolean break
byte case catch char
class const continue default
do double else enum
extends final finally float
for goto if implements
import instanceof int interface
long native new package
private protected public return
short static strictfp super
switch synchronized this throw
throws transient try void
volatile while

注意:goto 与 const 是 Java 中的保留字,即没有赋予特殊含义却仍被 Java 占用的单词

标识符

标识符即标识的符号,指程序中一切自己指定的名称,例如后续语法中涉及到的变量名称、常量名称、数组名称、方法名称、参数名称、类名、接口名、对象名等等。

组成规则

  • 英文大小写字母
  • 数字
  • 货币字符($)和下划线(_)

注意事项

  • 数字不能开头
  • 不可以使用关键字
  • 严格区分大小写,不限制长度
  • 起名时,尽量达到见名知意

标识符中常见的命名规则

  • 类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:(领域模型 的相关命名)DO / DTO / VO / DAO 等。

正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

  • 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。

正例: localValue / getHttpMessage() / inputUserId

  • 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。

正例: MAX_STOCK_COUNT
反例: MAX_COUNT

  • 抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命 名以它要测试的类的名称开始,以 Test 结尾。
  • POJO 类中的任何布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。

反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是 isSuccess(),RPC框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。

  • 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用 单数形式,但是类名如果有复数含义,类名可以使用复数形式。

正例: 应用工具类包名为 com.alibaba.mpp.util、类名为 MessageUtils(此规则参考 spring的框架结构)

变量和常量

所谓变量,就是程序的运行过程中值会发生改变的量;所谓常量,就是程序运行过程中值不能发生改变的量。

在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量还是常量。

声明

由于 Java 语言是一种强类型的语言,所以变量和常量在使用以前必须首先声明,在程序中声明变量和常量的语法格式如下:

数据类型 变量或常量名称;

变量或常量名称是该变量或常量的标识符,需要符合标识符的命名规则,在实际使用中,该名称一般和变量或常量的用途对应,这样便于程序的阅读。例如:

int age;

赋值

变量和常量在使用前必须先赋值,给变量或常量赋值的格式为:

变量或常量名称 = 值;

赋值时,要求值的类型需要和声明变量或常量的数据类型一致。例如:

age = 18;

注意:= 表示赋值,将 = 右边的值赋给了左边的变量或常量。Java 中使用 == 表示相等,等价于数学中的 =

综合使用

可以在声明变量或常量的同时,设定该变量或常量的值,语法格式如下:

数据类型 变量或常量名称 = 值;

例如:

int age = 18;

数据类型

Java 是一种强类型语言,这意味着必须为每一个变量声明一种数据类型,基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字字母。

在 Java 中,数据类型分为原生数据类型和引用数据类型。

原生数据类型

Java 支持 8 种原始数据类型。原始数据类型是由该语言预先定义的并用关键词命名的。

字节型(byte)

  • 字节型是一种 8 位有正负的二进制整数,最小值是 -128(-2^7),最大值是 127(2^7-1),默认值为 0。
  • 字节型数据类型主要是为了在大型数组内节省空间,主要是替代整数由于字节型比整数小 4 倍。

例如:

byte a = 100;
byte b = -50;

短整数(short)

  • 短整数是一种 16 位有正负的二进制整数,最小值是 -32768(-2^15),最大值是 32767(2^15-1),默认值为 0。
  • 短整数类型的数据也可以像字节型一样用于节省空间。短整数比整数小两倍

例如:

short a = 10000;
short b = -20000;

整数型(int)

  • 整数型是一种 32 位有正负的二进制整数,最小值是 - 2,147,483,648(-2^31),最大值是 2,147,483,647(2^31 -1),默认值为 0。
  • 整数型一般默认被应用于整数值除非担心内存不够用。

例如:

int a = 100000;
int b = -200000;

长整型(long)

  • 长整型是一种 64 位有正负的二进制整数,最小值是 -9,223,372,036,854,775,808(-2^63),最大值是 9,223,372,036,854,775,807 (2^63 -1),默认值为0。
  • 这种数据类型一般是在需要比整数型范围更大时应用。

例如:

long a = 1000000L;
long b = -20000000L;

浮点型(float)

  • 浮点型数据是一种单精度的 32 位 IEEE 754 标准下的浮点数据,默认值是 0.0f。
  • 浮点型数据主要是为了在大型浮点数字数组中节约内存。
  • 浮点型数据不能用于如货币这样的精确数据。

例如:

float a = 234.5F;

双精度型(double)

  • 双精度型数据是一种双精度的 64 位 IEEE 754 标准下的浮点数据,默认值是 0.0d。
  • 这种数据类型主要是默认被用于表示小数的值,一般是默认的选择。
  • 双精度型数据不能用于如货币这样的精确数据。

例如:

double a = 123.4;

布尔型(boolean)

  • 布尔型数据代表一个信息比特。它只有两个可能的值:真(true)和假(false),默认值是假(false)。
  • 这种数据类型用于真假条件下的简单标记。

例如:

boolean a = true;

字符型(char)

  • 字符型数据是简单的 16 位 Unicode 标准下的字符,最小值是: '\u0000' (或 0),最大值是: '\uffff' (或 65,535 )。
  • 字符型数据可以用来储存任意字母。

例如:

char a ='A';

原生数据类型的相互转换

在 Java 中,类型的转换随处可见。例如变量的定义、数值的计算以及方法的传递等等,类型转换在 Java 中具有重要的作用。在此,先简单介绍一下原生数据类型的相互转换。

要想理解数据类型的相互转换,首先必须知道以下两点:

  • 在 Java 中各种原生数据类型所占内存的大小,如下表所示:
数据类型 所占的内存
boolean 未定
byte 1字节
char 2字节
short 2字节
int 4字节
long 8字节
float 4字节
double 8字节
  • 在 Java 中,整数的默认数据类型为 int,浮点数的默认数据类型为 double。
隐式类型转换

在 Java 中,隐式转换由系统自动进行,无需程序员干涉,且不会损失精度。规则如下表所示:

原类型 目的类型
byte short, int, long, float, double
short int, long, float, double
char int, long, float, double
int long, float, double
long float, double
float double

例如:

byte + int

会自动转换成:

int + int

又如:

int + double

会转换成:

double + double

再如:

byte + char

会转换成:

int + int
显式类型转换

在 Java 中,显式类型转换又被称为强制类型转换,这种转换不会自动进行,需要由程序员显式指定,而且有可能损失精度。规则如下表所示:

原类型 目的类型
byte char
short byte, char
char byte, short
int byte, short, char
long byte, short, char, int
float byte, short, char, int, long
double byte, short, char, int, long, float

例如:

int a;

要想将a转换成 byte 类型,需要这样写:

(byte) a;

如想将整个表达式的结果进行数据类型转换,必须将整个表达式用括号括起来。
例如:

int a;
int b;
byte c;  

要想将 a + b 的结果赋值给 c,则需要这样写:

c = (byte) (a + b);

引用数据类型

  • 引用数据类型是由类的编辑器定义的。他们是用于访问对象的。这些变量被定义为不可更改的特定类型。例如:Employee, String 等等。
  • 类对象和数组变量就是这种引用数据类型。
  • 任何引用数据类型的默认值都为空。
  • 一个引用数据类型可以被用于任何声明类型和兼容类型的对象。

例如:

String string = new String("hello world");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,656评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,681评论 18 139
  • 壶即到 一壶龙井泡之 饮一两口 满鼻生香 倍感清爽 一两杯后 乃想三四杯 七杯已过 心静气凝 此乃人生至乐至极 缘...
    青云无言阅读 78评论 0 0
  • 今天临摹的是我男神,索隆。 不知勾线哪里画细线哪里画粗线。 学着留白上色,确实看起来比涂得满当当好看。有点层次感?...
    瞎了听不见阅读 331评论 0 2
  • 一早起来就把它《光荣与梦想》一直拿在手里,随时准备看,也下定决心看开看,我的习惯是开了头就会停不下来,但是还是败给...
    红枣水阅读 322评论 0 1