Java基础语法

对象

软件对象也由状态和相关行为组成。

对象将其状态存储在字段(某些编程语言中的变量)中,并通过方法(某些编程语言中的函数)公开其行为。

字段cadencespeedgear表示对象的状态,方法(changeCadencechangeGearspeedUp)定义其与外部世界的交互

方法对对象的内部状态进行操作,并作为对象到对象通信的主要机制。隐藏内部状态并要求通过对象的方法执行所有交互被称为数据封装——面向对象编程的基本原则。

将代码捆绑到单个软件对象中提供了许多好处,包括:

  1. 模块化:一个对象的源代码可以独立于其他对象的源代码编写和维护。一旦创建,对象可以很容易地在系统内部传递。
  2. 信息隐藏:通过仅与对象的方法交互,其内部实现的细节对外界保持隐藏。
  3. 代码重用:如果一个对象已经存在(可能由另一个软件开发人员编写),您可以在您的程序中使用该对象。这允许专家实现/测试/调试复杂的、特定于任务的对象,然后您可以信任这些对象在您自己的代码中运行。
  4. 可插入性和易于调试:如果某个特定对象出现问题,您可以简单地将其从应用程序中删除,然后插入一个不同的对象作为替代。这类似于解决现实世界中的机械问题。如果螺栓断裂,则更换,而不是整台机器。

在 Java 编程语言中,每个类都可以有一个直接的超类,并且每个超类都可以有无限数量的子类

接口

对象通过它们公开的方法来定义它们与外部世界的交互

方法形成对象与外界的接口

在其最常见的形式中 , 接口是一组具有空主体的相关方法

实现一个接口可以让一个类对它承诺提供的行为更加正式。接口在类和外部世界之间形成了一个契约,并且这个契约在编译时由编译器强制执行。如果您的类声称实现了一个接口,则该接口定义的所有方法都必须出现在其源代码中,然后该类才能成功编译。

(要实际编译ACMEBicycle该类,您需要将public关键字添加到已实现接口方法的开头。)

包是组织一组相关类和接口的命名空间

Java 平台提供了一个庞大的类库(一组包),适合在您自己的应用程序中使用。这个库被称为“应用程序编程接口”,简称“API”。它的包代表最常与通用编程相关的任务。

标识符

给包,类,方法,变量起名字的符号

标识符由字母、数字、下划线、美元符号组成

包名:全部小写,多级包用.隔开。
类、接口:一个单词首字母大写,多个单词每个单词的首字母大写。
方法和变量:一个单词首字母小写,多个单词从第二个单词开始每个单词的首字母大写
常量:如果是一个单词,所有字母大写,如果是多个单词,所有的单词大写,用下划线区分每个单词
项目名:全部用小写字母,多个单词之间用横杆-分割

关键字

访问控制

private
访问控制修饰符,在同一类内可见
protected
访问控制侬饰符,对同一包内的类和所有子类可见
public
访问控制修饰符,对所有类可见

类、方法和变量修饰符

abstract
表明类或者成员方法具有抽象展性
class
声明一个类
enum
枚举(在J2SE 5.0中添加)
extends
表明一个类型是另一个类型的子类型
final
用来说明最终属性
implements
表明一个类实现接口
interface
接口
native
原生方法(非Java实现)
new
用来创建新实例对象
static
表明具有静态同性
strictfp
用于很制浮点计其的精度和舍入(在J2SE 1.2中添加)
synchronized
表明一段代码需要同步执行
transient
声明不用序列化的成员域
volatile
表明两个或音多个变量必须同步地发生变化

程序控制语句

break
用于结束当前循环体中的执行
case
用在switch语句之中,表示其中的一个分支
continue
用于在当前循环体结束时恢复程序执行
default
默认,例如,用在switch语句中,表明一个默认的分支
do
用在do-while循环结构中
else
用在条件语句中,表明当条件不成立时的分支
for
一种循环结构的引导词
if
条件语句的引导词
instanceof
用来测试一个对兔是管是指定类型的实例对象

return
用于完成方法的执行。返回给调用者一个方法定义返回值
switch
分支语句结构的引导词
while
用于创建一个while循环

错误处理

assert
断言,用来进行程序调试(在J2SE14中添加)
catch
用在异常处理中,用来捕捉异常
finally
用来声明处理异常中肯定会被执行到的语句块
throw
抛出一个异常
throws
在方法声明中用于搭定在方法中未处理哪些异常

try
定义具有异常处理的语句块

包相关

import
表明引入要访问搭定的类或包
package

基本数据类型

boolean
基本数据类型之一,布尔类型
byte
基本数据类型之一,字节类型
char
基本数据类型之一,字符类型
double
基本数据类型之一,双精度浮点数类型
float
基本数据类型之一,单精度浮点数类型
int
基本数据类型之一,整数类型
long
基本数据类型之一,长整数类型
short
基本数据类型之一.短整数类型

变量引用

super
当前对象的父类型的引用或音父类型的构造方法
this
指向当前实例对象的引用
void
用于声明方法不返回任何值

保留关键字

goto
保留关键享,没有具体含义
const
保留关键享,没有具体含义

换行输出 :

System.out.println("Hello World");System.out.print("Hello\nWord")

System.out.print("Hello\tWord")

注释

1
2
3
4
5
6
7
8
9
10
//单行注释

/*
*多
*行
*注
*释
*/

/**JavaDoc注释*/

访问修饰符

分隔符

  • ; 分号 用来终止一个语句
  • {} 花括号、大括号 用来包括自动初始化的数组的值,也用来定义程序块、类、方法以及局部范围
  • []方括号、中括号 用来声明数组的类型,也用来表示撤消对数组值的引用
  • , 逗号 在变量声明中,区分变量说明的各个变量。在for控制语句中,用来将圆括号内的语句连接起来
  • . 原点 用来将软件包的名字与它的子包或类分隔。也用来将引用变量与变量或方法分隔
  • () 圆括号 在定义和调用方法时用来容纳参数表。在控制语句或强制类型转换组成的表达式中用来表示执行或计算的优先权

进制

运算符

除了赋值运算符之外的所有二元运算符都是从左到右计算的

赋值运算符从右到左求值

算数运算符

+ - * / % ++ --

  • 1./ 左右两端的类型需要一致

  • 2.%最后的符号和被模数相同

  • 3.前++;先+1,后运算

    ​ 后++;先运算 , 后+1

  • 4、+:当String字符串与其他数据类型只能做连接运算 , 并且结果为String类型

比较运算符

== != < > <= >= instanceof

运算结果都是Boolean类型

赋值运算符

= += -= *= /= %=

逻辑运算符

& | ^ ! && ||

& 逻辑与

| 逻辑或

^ 逻辑异或

! 逻辑非

&& 短路与

|| 短路或

  • &:左边无论真假,右边都会进行运算;
  • &&:如果左边为假,则右边不进行运算;
  • | || 的区别同上;在使用的时候建议使用&&||
  • ^与或|的不同之处是:当左右都为true时,结果为false。

位运算符

<<

>>

<<<

&

|

^

~

三元运算符

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

条件运算符

条件表达式为true时,运算后的结果是表达式1
条件表达式为false时,运算后的结果是表达式2

  • 1、表达式1与表达式2的类型必须一致;
  • 2、使用三元运算符的地方一定可以使用if…else代替,反之不一定成立;

例:

1
2
3
4
5
6
public static void main (Sting[] args){
int a=1;
int b=2;
String result = a<b?("a大"):("b大");
System.out.println(result);
}

==equals() 的区别

Java语法—-Java中equals和==的区别

结果为布尔类型

例 :

1
2
3
String sex="男";
sex.equals("男");
//此种情况变量sex必须赋值

1
"男".equals(sex);

转义字符

支持一些特殊的转义序列charString文字:

String.contains()方法不需要转义

\a(响铃) \b( 退格) \f(换页) \n(换行) \r(回车) \t(制表符)\v (垂直制表 ) \\(反斜杠) \'(单引号) \"(双引号) \0 (空字符) \ddd (1到3位八进制所代表的任意字符) \xhh (1到2位十六进制所代表的任意字符)

变量

Java 编程语言定义了以下类型的变量:

  • 实例变量(非静态字段)从技术上讲,对象将其各自的状态存储在“非静态字段”中,即没有static关键字声明的字段。非静态字段也称为实例变量,因为它们的值对于类的每个实例(换句话说,对于每个对象)都是唯一的
  • 类变量(静态字段)变量static是使用修饰符声明的任何字段;这告诉编译器存在这个变量的一个副本,不管这个类被实例化了多少次。定义特定类型自行车的齿轮数量的字段可以标记为static , 因为从概念上讲,相同数量的齿轮将适用于所有实例。该代码static int numGears = 6;将创建这样一个静态字段。此外,可以添加关键字final来表示齿轮的数量永远不会改变。
  • 局部变量与对象在字段中存储其状态的方式类似,方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如,int count = 0;)。没有特殊关键字将变量指定为局部变量;该决定完全来自声明变量的位置——位于方法的左大括号和右大括号之间。因此,局部变量仅对声明它们的方法可见;课堂上的其他人无法访问它们。
  • 参数您已经在“Hello World!”的Bicycle类和方法中看到了参数示例。main应用。回想一下,该main方法的签名是public static void main(String[] args). 这里,args变量是这个方法的参数。要记住的重要一点是,参数总是被归类为“变量”而不是“字段”。这也适用于您将在本教程后面了解的其他参数接受构造(例如构造函数和异常处理程序)。

成员变量( 非静态字段即没有static关键字声明的字段 , 也叫作实例变量/对象变量 , 定义在类中 , 属于对象 , 只能对象调用(类的实例调用 ? ) , 堆内存 )

​ 静态成员变量(也叫类变量 , 有static关键字声明 , 属于成员变量的一种 , 可以直接使用类名调用 , 可以对象调用 , 共享内存)

局部变量(在方法体中定义 , 栈内存 , 生命周期只存在在方法中 , 方法结束后就会回收)

Java没有全局变量 , 但可以用静态成员变量实现全局变量效果

变量的命名

变量名区分大小写。

变量的名称可以是任何合法的标识符——一个长度不限的Unicode字母和数字序列,以字母、美元符号$或下划线字符_开头。惯例是变量名总是以字母开头,而不是$_

美元符号字符根本就不会被使用。在某些情况下,自动生成的名称将包含美元符号,但变量名称应该始终避免使用它。对于下划线字符也有类似的约定

虽然从技术上讲,变量名以_开头是合法的,但这种做法是不鼓励的。

空格是不允许的。

后续字符可以是字母、数字、美元符号或下划线字符。为变量选择名称时,请使用完整的单词而不是隐晦的缩写。

在许多情况下,它还会使您的代码自我记录

名称不能是关键字或保留字

如果您选择的名称仅包含一个单词,则将该单词拼写为所有小写字母。如果它包含多个单词,则将每个后续单词的第一个字母大写。

如果变量存储一个常量值,例如static final int NUM_GEARS = 6,则约定会略有变化,将每个字母大写并用下划线分隔后续单词。下划线字符从不在其他地方使用。

常量

常量名通常大写

不同字符使用下划线分隔

只能被赋值一次 , 通常定义时即对其初始化

1
final double PI = 3.14;

数据类型

原始类型由语言预定义并由保留关键字命名

原始值不与其他原始值共享状态

已声明但未初始化的字段将由编译器设置为合理的默认值。一般而言,此默认值将为零或null,具体取决于数据类型

局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果无法在声明它的地方初始化局部变量,请确保在尝试使用它之前为其分配一个值。访问未初始化的局部变量将导致编译时错误。

如果整型字面值以字母Ll结尾,则为长型;否则为int类型。建议使用大写字母L,因为小写字母l与数字1很难区分

如果浮点字面值以字母Ff结尾,则为float类型 ; 否则,它的类型是double,它可以选择以字母Dd结尾

字符和字符串文字 :

文字类型charString可以包含任何 Unicode (UTF-16) 字符。也可以使用“Unicode 转义”,始终对文字使用“单引号”,对char文字使用“双引号” String。Unicode 转义序列可以在程序的其他地方使用(例如在字段名称中),而不仅仅是在charString文字中。

null文字可以用作任何引用类型的值。null可以分配给任何变量,除了原始类型的变量。null除了测试它的存在之外,几乎无能为力。因此,null经常在程序中用作标记,表示某些对象不可用。

有一种特殊的字面量,称为类字面量,由类型名称和附加 “ 组成.class;例如,String.class. 这指的Class是表示类型本身的(类型的)对象。

在 Java SE 7 及更高版本中,任意数量的下划线字符 _)可以出现在数字文字中数字之间的任何位置。能够分隔数字文字中的数字组,提高代码的可读性。

原始数据类型Primitive Data

double此数据类型绝不应用于精确值,例如货币。

  • 数值型
    • 字节型(byte)
    • 整数类型(short,int,long)
    • 浮点类型(float,double)
  • 字符型(char)
  • 布尔型(boolean)
1
2
3
4
String name = "张三";
//String 双引号
char sex = '男';
//char 单引号

引用数据类型

  • 类(class)
  • 接口(interface)
  • 数组([])
1
String.format("%.2f",f1);

数组

数组是一个容器对象,它包含固定数量的单一类型的值。数组的长度是在创建数组时确定的。创建后,它的长度是固定的。

数组中的每一项都称为一个元素,每个元素都通过其数字索引访问

标识符

数组元素

元素下标 : 从0开始

元素类型

流程控制语句

顺序结构

分支结构

条件为布尔类型

if

1
2
3
4
/*if(条件){
*执行代码块
*}*/

if-else

1
2
3
4
5
6
7
/*
if(条件){
代码块1
}else{
代码块2
}
*/

if-else-if

1
2
3
4
5
6
7
8
9
10
11
/*
if(条件){
代码块1
}else if(条件2){
代码块2
}else if(条件3){
代码块3
}else {
代码块4
}
*/

switch

ifif-else语句不同,switch语句可以有许多可能的执行路径。

switch适用于byteshortcharint基元数据类型。还适用于枚举类型、String类和一些封装某些基本类型的特殊类 : CharacterByteShortInteger

语句的主体switch称为switch 块。块中的语句switch可以用一个或多个casedefault标签来标记。该switch语句计算其表达式,然后执行匹配case标签后面的所有语句。

switch语句仅基于单个整数、枚举值或String对象测试表达式

每个break语句都终止封闭switch语句

continue

return

循环结构

for

迭代一系列值

初始化表达式初始化循环;它在循环开始时执行一次

当终止表达式的计算结果为false时,循环终止

递增表达式在每次循环迭代后被调用;这个表达式可以对一个值递增或递减

增强for循环

or each element in arrayName do {…}

for(数据类型 变量名 :遍历的目标){ 数据类型 变量名 :声明一个变量用来接收遍历目标遍历后的元素}

1
for(ElementType element: arrayName){};

例:

1
2
3
4
int[] num = {1,2,3,4,5,6};
for(int i: num){
System.out.print(i);
}

while

while语句计算表达式,表达式必须返回一个布尔值。

do-while

do-while和之间的区别在于whiledo-while在循环底部而不是顶部评估其表达式。因此,块内的语句do总是至少执行一次

表达式

表达式是由变量、运算符和方法调用组成的构造,这些构造根据语言的语法构造,计算结果为单个值。

表达式返回值的数据类型取决于表达式中使用的元素。

表达式也可以返回其他类型的值,例如booleanor String

只要表达式的一部分所需的数据类型与另一部分的数据类型匹配,Java 编程语言就允许您从各种较小的表达式构造复合表达式。

一条语句构成一个完整的执行单元。;通过以分号 ( )结束表达式,可以将以下类型的表达式组成语句。

  • 赋值表达式
  • 任何使用++--
  • 方法调用
  • 对象创建表达式

这样的语句称为表达式语句

还有另外两种语句:声明语句和控制流语句 : 声明语句声明一个变量 , 控制流语句控制语句执行的顺序

是一组位于平衡大括号之间的零个或多个语句,可以在任何允许使用单个语句的地方使用

反射

语法糖

注解

多态

同一个引用类型使用不同的实例而执行不同操作

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

You Found Me.

支付宝
微信