Java基本语法

本章一起来探讨下Java的基本语法。主要从以下几个方面展开:

  • Java关键字
  • Java标识符
  • Java变量
  • Java数据类型
  • Java运算符

学完本章内容之后,我们对Java会有更深的认识,同时也可以使用Java完成基本的操作。

一、关键字

1.1 含义

被java赋予了特殊含义,用作专门用途的字符串。

例如:

  • public:表示公共的
  • class:定义类

1.2特点

  • 所有的单词都是小写
  • goto:表示java的预留关键字

1.3 关键字列表

Java提供了很多关键字,具体如下表:

用于定义数据类型的关键字
class interface enum byte short
int long float double char
boolean void
用于定义数据类型值的关键字
true false null
用于定义流程控制的关键字
if else switch case default
while do for break continue
return
用于定义访问修饰符的关键字
private protected public
用于定义类,函数,变量修饰符的关键字
abstract final static synchronized
用于定义类与类之间关系的关键字
extends implements
用于定义建立实例及引用实例,判断实例的关键字
new this super instanceof
用于异常处理的关键字
try catch finally throw throws
用于包的关键字
package import
其他修饰符关键字
native strictfp transient volatile assert

二、标识符

2.1 Java标识符含义

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符

凡是自己可以起名字的地方都叫标识符。

2.2 Java标识符命名的规则

1.由26个英文字母大小写,数字:0-9 ,_或 $ 组成
2.数字不可以开头。
3.不可以使用关键字和保留字,但能包含关键字和保留字。
4.Java中严格区分大小写,长度无限制。
5.标识符不能包含空格。 注意:取名满足见名知意,长度不宜过长。小于30个字符;

2.3 java标识符的命格规则

很多公司里面,对命名有严格的要求

1.包名: xxxyyyzzz
所有的名称都是小写;
多个单词都是小写;
可以使用.创建多层包名
2.类名和接口名 XxxYyyZzz
首字母大写;
多个单词组成,首字母都是大写;
3.变量和方法名 xxxYyyZzz
首个单词首字母小写;
多个单词组成,除了第一个单词首字母小写,其余单词首字母大写;
4.常量的名称 XXX_YYY_ZZZ
常量的名称都是大写;
多个单词组成使用下划线链接;

三、变量

3.1 概念

  • 内存中的一个存储区域;
  • 该区域有自己的名称(变量名)和类型(数据类型);
  • Java中每个变量必须先声明,后使用;
  • 该区域的数据可以在同一类型范围内不断变化;
  • 变量是通过使用变量名来访问这块区域的;
  • 变量的作用域:一对{ }之间有效

3.2 定义格式

数据类型 变量名 = [初始值];

//例如
int num1 = 90;

3.3 变量的分类

a.按照申明(创建)的位置划分

1.成员变量|全局变量|属性
a.定义在方法的外部,类的内部;
b.范围在该类下所有的地方都可以使用,包括里面多个方法内部;
2.局部变量
a.定义在方法或者代码块的内容;
b.只在定义的方法或者代码块的{}里面使用; 之间的区别:
a.定义位置不一样;
b.局部变量在使用之前必须赋值。全局变量会生成对应数据类型的默认值;

b.按照数据类型划分

1.基本数据类型
数值型:
整数型:
byte:
short:
int:
long:
默认的类型是int
浮点型:
float
double:
Java 的浮点型常量默认为 double 型,声明 float 型常量,须后加 ‘f’ 或 ‘F’。
字符型:
char:
a.使用 '' 单引号定义内容;
b.可以存放一个中文
c.可以存放Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = '\n'; -- '\n'表示换行符
d.直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如: \u000a 表示 \n。
e.char 类型是可以进行运算的。因为它都对应有 Unicode 值。 布尔型:
boolean:
boolean类型数据只允许取值true和false 2.引用数据类型
除了以上8种基本类型之外,其余的都是引用数据类型。包括:String、Object包装类等

3.4 变量初始化

声明一个变量之后,必须用赋值语句对变量进行显式初始化,千万不要使用未初始化的局部变量。

例如,Java编译器认为下面的语句序列是错误的:

public static void main(String[] args) {
String username; //Variable 'username' might not have been initialized
System.out.println("username = " + username);
}

要想对一个已经声明过的变量进行赋值,就需要将变量名放在等号(=)左侧,相应取值的Java表达式放在等号的右侧

public static void main(String[] args) {
String username;
username = "猪小明"; //赋值
System.out.println("username = " + username);
}

也可以将变量的声明和初始化放在同一行中。例如:

String username  = "猪小明"; //赋值

3.5 常量

在Java中,利用关键字final指示常量。例如:

public static void main(String[] args) {
final double PI = 3.14;
//PI = 3.10; //异常 Cannot assign a value to final variable 'PI'
System.out.println("PI = " + PI);
}

关键字final表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上,常量名使用全大写。

四、Java数据类型

Java是—种强类型语言。这就意味着必须为每一个变量声明一种类型,在内存中分配了不同大小的内存空间。在Java中,一共有8种基本类型(primitive type),其中有4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型。

4.1 整型

Java各整型类型有固定的数据范围和字段长度,不受操作系统OS的影响,以保证Java程序的可移植性。

并且Java提供四种整型(byte,short,int,long)用于表示没有小数部分的值,并且允许它们为负数。

Java的整型默认为int类型,如果声明long型整型必须在数值后添加l或者L

int num1 = 100;
long num2 = 100L;

在通常情况下,int类型最常用。但如果表示星球上的居住人数,就需要使用long类型了,因为int类型数值范围最大的是 2的31次方(正好超过20亿)。这样的话如果使用int肯定会超过范围。

4.2 浮点型

与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体OS的影响。

浮点类型通常用于表示有小数部分的数值。float表示单精度;double表示双精度,同时也是float的两倍

Java 的浮点型常量默认为 double 型,声明 float 型常量,须后加 ‘f’‘F’

double d1 = 10.5;
float d2 = 10.5F;

浮点数值不适用于无法接受舍入误差的金融计算中。例如,命令System.out.printIn(2.0-1.1)将打印出0.8999999999999999,而不是人们想象的0.9。

这种舍入误差的主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确地表示分数1/10。

这 就好像十进制无法精确地表示分数1/3一样。如果在数值计算中不允许有任何舍入误差,就应该使用BigDecimal类,例如金额

4.3 char字符类型

char 型数据用来表示通常意义上"字符"。

字符型常量的三种表现形式:

  • 字符常量是用单引号(‘ ’)括起来的单个字符,涵盖世界上所有书面语的字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
  • Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = '\n'; -- '\n'表示换行符
  • 直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n。

char 类型是可以进行运算的。因为它都对应有 Unicode 值。

4.4 boolean

boolean 类型适于逻辑运算,一般用于程序流程控制:

  • if条件控制语句;
  • while循环控制语句;
  • do-while循环控制语句;
  • for循环控制语句;

boolean类型数据只允许取值true和false,不可以0或非 0 的整数替代true和false,这点和C语言不同。

4.5 基本数据类型转换

经常需要将一种数值类型转为另一种数值类型,但是在转换的过程中一定要注意可能会造成数据的精度丢失,例如:double类型转为int类型,那么小数点后面的数值就会丢失;

Java针对现实情况分别提高两种数值转换方式:自动类型转换强制类型转换

4.5.1 自动类型转换

容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:

有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。

byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。

4.5.2 强制类型转换

将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(()),但可能造成精度降低或溢出,格外要注意。

通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。如:

String a = "43"; int i = Integer.parseInt(a);

boolean类型不可以转换为其它的数据类型。

4.6 大数值

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigIntegerBigDecimal

这两个类可以处理包含任意长度数字序列的数值。

  • BigIntcger类实现了任意精度的整数运算,
  • BigDecimal实现了任意精度的浮点数运算。

使用静态的valueOf方法可以将普通的数值转换为大数值:

BigInteger bigInteger = BigInteger.valueOf(10);
BigDecimal bigDecimal = BigDecimal.valueOf(2.0);

遗憾的是,不能使用人们熟悉的算术运算符(如:+和*)处理大数值。而需要使用大数 值类中的add和multiply方法。

4.6.1 BigInteger

BigIntcger类实现了任意精度的整数运算。常用方法如下:

BigInteger方法名 含义
static valueOf() 将参数转换为BigInteger
add() 相加
subtract() 相减
multiply() 相乘
divide() 相除取整
remainder() 取余
public static void main(String[] args) {

    //int 转为 BigInteger
BigInteger num1 = java.math.BigInteger.valueOf(100);
BigInteger num2 = java.math.BigInteger.valueOf(12); //相加
BigInteger add = num1.add(num2);
System.out.println("相加:" + add); //相减
BigInteger subtract = num1.subtract(num2);
System.out.println("相减:" + subtract); //相乘
BigInteger multiply = num1.multiply(num2);
System.out.println("相乘:" + multiply); //相除 取整
BigInteger divide = num1.divide(num2);
System.out.println("相除:" + divide); //取摸|取余数
BigInteger remainder = num1.remainder(num2);
System.out.println("取余:" + remainder);
}

最终结果:

相加:112
相减:88
相乘:1200
相除:8
取余:4

4.6.1 BigDecimal

BigDecimal实现了任意精度的浮点数运算。常用方法如下:

BigDecimal方法名 含义
static valueOf() 将参数转换为BigDecimal
add() 相加
subtract() 相减
multiply() 相乘
divide() 相除取整
remainder() 取余
public static void main(String[] args) {

    //int 转为 BigInteger
BigDecimal num1 = BigDecimal.valueOf(100.5);
BigDecimal num2 = BigDecimal.valueOf(12.3);
//相加
BigDecimal add = num1.add(num2);
System.out.println("相加:" + add); //相减
BigDecimal subtract = num1.subtract(num2);
System.out.println("相减:" + subtract); //相乘
BigDecimal multiply = num1.multiply(num2);
System.out.println("相乘:" + multiply); //相除 保留两位小数,最后一位四舍五入。当然也可以使用其他模式
BigDecimal divide = num1.divide(num2,2, RoundingMode.UP);
System.out.println("相除两位小数/四舍五入:" + divide); //取摸|取余数
BigDecimal remainder = num1.remainder(num2);
System.out.println("取余:" + remainder);
}

最终结果:

相加:112.8
相减:88.2
相乘:1236.15
相除两位小数/四舍五入:8.18
取余:2.1

五、Java运算符

Java提供了多种运算符来满足正常的需求,我们可以将运算符分为以下几类:

  • 算术运算符
  • 赋值运算符
  • 比较运算符(关系运算符)
  • 逻辑运算符
  • 位运算符
  • 三元运算符

5.1 算术运算符

运算符 运算 范例 结果
+ 正号 +3 3
- 负号 b=4; -b -4
+ 5+5 10
- 6-4 2
***** 3*4 12
/ 5/5 1
% 取模 5%5 0
++ ++ 自增(前):先运算后取值 自增(后):先取值后运算 a=2;b=++a; a=2;b=a++; a=3;b=3 a=3;b=2
- - - - 自减(前):先运算后取值 自减(后):先取值后运算 a=2;b=- -a a=2;b=a- - a=1;b=1 a=1;b=2
+ 字符串相加 “He”+”llo” “Hello”

5.2 赋值运算符

运算符 运算 范例 结果
= 赋值 b=5 5
+=, -=, *=, /=, %= 计算完再赋值 b = 5;b+=2 7

5.3 比较运算符(关系运算符)

运算符 **运算 ** 范例 结果
== 相等于 4==3 false
!= 不等于 4!=3 true
< 小于 4<3 false
> 大于 4>3 true
<= 小于等于 4<=3 false
>= 大于等于 4>=3 false
instanceof 检查是否是类的对象 “Hello” instanceof String true

5.4 逻辑运算符

运算符 运算 范例 结果
& AND(与) false & true false
| OR(或) false|true true
^ XOR(异或) true^false true
! Not(非) !true false
&& AND(短路) false&&true false
|| OR(短路) false||true true

5.5 三元运算符

三元运算符,主要是根据条件表达式的不同,选择不能的结果

就类型if...else分支语句一样,可以到达二选一结果。

例如:成绩大于等于60分表示及格,否则就是不及格

//语法

(条件表达式)?表达式1:表达式2

-如果条件表达式为true,运算后的结果是表达式1;

-如果条件表达式为false,运算后的结果是表达式2;

//范例
int num1 = (100>1)?666:250;
因为100>1返回的是true,所以最终num1的结果是666

本博文由 IT蚱蜢哥 原创发布!欢迎转载,注明出处!

Java核心基础第2篇-Java基本语法的更多相关文章

  1. Java核心基础第5篇-Java面向对象_类和对象

    Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...

  2. Java核心基础第3篇-Java流程控制

    Java流程控制 本章一起来探讨下Java的流程控制语句.主要从以下几个方面展开: Java分支语句 Java循环语句 Java其实和其他任何的开发语言一样,分支语句和循环语句是必不可少的,有个这两个 ...

  3. Java核心基础第4篇-Java数组的常规操作

    Java数组 一.数组简介 数组是多个相同类型数据的组合,实现对这些数据的统一管理 数组属引用类型,数组型数据是对象(Object) 数组中的元素可以是任何数据类型,包括基本类型和引用类型 数组类型是 ...

  4. Java核心基础第1篇-走进Java世界

    一.Java简介 1.1 Java概述 Java从一开始就以友好的语法.面向对象.内存管理和最棒的跨平台可移植性来吸引程序员. 写一次就可以在所有地方执行( write-once/run-anywhe ...

  5. Java核心基础知识(一):概念、语法、使用、源码

    1. Java中OOP的特点? OOP(Object Oriented Programming):面向对象编程.具有封装.继承.多态三大特征. 封装:解决数据安全性问题: 继承:解决代码的重用性问题: ...

  6. Java语言基础(二) Java关键字

    Java语言基础(二) Java关键字 Java关键字比较多,我就不列举出来了,只记录一些常用的小知识点: ①Java的关键字只有小写. ②then.sizeof都不是Java的关键字,熟悉C++的程 ...

  7. Java编程基础阶段笔记 day01 Java语言概述

    ​目录内容 DOS命令 电脑配置 Java语言的特性 Java两种核心机制 Java语言环境搭建 第一个Java程序 注释 Java语句说明 编程风格 作业 常用的DOS命令 dir :    列出当 ...

  8. Java入门基础,必读!Java单行、多行和文档注释!

    在编写Java的过程中,我们需要对一些程序进行注释.除了方便自己阅读之外,我们还需要为他人更好地理解我们的程序.因此,我们需要对一些程序进行注释,这些注释可以是编程思想,也可以是程序的作用,可以说是J ...

  9. Java核心基础学习(一)--- 2019年1月

    1.对比Exception和Error,运行时异常与一般异常 Exception 和 Error 都继承了 Throwable 类,在 Java 中只有 Throwable 类才能 thorw(抛出) ...

随机推荐

  1. 046.Python协程

    协程 1 生成器 初始化生成器函数 返回生成器对象,简称生成器 def gen(): for i in range(10): #yield 返回便能够保留状态 yield i mygen = gen( ...

  2. STM32用FreeRTOS时任务优先级和中断优先级说明

    下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,这些知识点在以后的使用中务必要掌握牢固. FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的 co ...

  3. 为何使用thrift-rpc与http的选择

    在工作中偶然看到公司旧架构在loaclserver中使用的是thrift,遂记录一下 thrif作为一种rpc框架 接口描述语言和二进制通信协议,至于为何使用thrift 其问题本质是为何在已有htt ...

  4. Nginx下配置Https 配置文件(vue)

    #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  5. JMicro微服务Hello World

    概述 JMicro是本人开发的基于Java实现的微服务框架,前两天发布0.0.3正式版本,并已发布到maven中央仓库. 项目源码github:https://github.com/mynewworl ...

  6. 004:ZYNQ_AXI总线学习笔记(1)

    1.    WHAT IS AXI? AXI是一种高级可扩展接口,是ARM AMBA的一部分. 2.    WHAT IS AMBA? AMBA是高级微控制器总线架构,开放的片内互联总线标准. 3.A ...

  7. A100计算能力

    A100计算能力 A100 GPU支持新的计算功能8.0.表1比较了NVIDIA GPU架构的不同计算功能的参数. 表1.计算能力:GP100 vs. GV100 vs. GA100. MIG架构 尽 ...

  8. cuDNN概述

    cuDNN概述 NVIDIACUDA深度神经网络库(cuDNN)是GPU加速的用于深度神经网络的原语库.cuDNN为标准例程提供了高度优化的实现,例如向前和向后卷积,池化,规范化和激活层. 全球的深度 ...

  9. 理想的GVS智能照明体验,就在汕头迎宾花园酒店

    汕头,依海而生,海在城中央是汕头特色. 汕头湾将汕头分为南北两岸,造就绝美市区海岸线,一碧万顷的海湾,焕然一新的海港,在市区就能直接看海. 在北山湾,动可结伴冲浪,静可观海吹风,动静都是一种快乐. 当 ...

  10. sentinel (史上最全+入门教程)

    文章很长,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈 为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 < Java 高并发 三部曲 > 面试必备 + 大厂 ...