Java基础(1)

本文深入浅出地解析Java的基础语法,涵盖对象、类、变量、构造方法等内容,详细介绍了如何在Java中创建对象,以及类变量、实例变量和局部变量的区别。同时,文章提供了丰富的实例操作,帮助读者更好地理解Java的语法结构。
摘要由CSDN通过智能技术生成

关于Java开发环境配置参考:

https://blog.csdn.net/Zachcc/article/details/94646514

Java基础

基础语法

Java是一种面向对象的语言,简单介绍下Java里所涉及到一些常见的名词。

  1. 对象
  2. 方法
  3. 变量
  4. 继承
  5. 封装
  6. 多态
  7. 封装

我们先重点研究对象和类。

  1. 对象:对象是类的实例化(这里对象不是你的女朋友,但是你得把它当成你女朋友才能给你对象买LAMER、YSL)。有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  2. 类:类是一个模板,它描述一类对象的行为和状态。

下图中男孩女孩为类,而具体的每个人为该类的对象

https://i-blog.csdnimg.cn/blog_migrate/bb4f2d475410bacfa9087716f22695ee.jpeg

Java中的对象

看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。对比现实对象和软件对象,它们之间十分相似。软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

 

Java中的类

类可以看成是创建Java对象的模板,简单定义下Dog这个类

Java中的变量

  1. 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  2. 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  3. 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

Java类的构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

Java中创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

  1. 声明:声明一个对象,包括对象名称和对象类型。
  2. 实例化:使用关键字new来创建一个对象。
  3. 初始化:使用new创建对象时,会调用构造方法初始化对象。

我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。

  1. 一个源文件中只能有一个public类
  2. 一个源文件可以有多个非public类
  3. 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
  4. 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
  5. 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
  6. import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
  7. 类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。

Java包

包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。import语句在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类

import java.io.*;

 

实例操作

第一个是Puppy类来表示小狗的形态和行为

第二个我们创建两个类:Employee 和 EmployeeTest。

Employee类有四个成员变量:name、age、designation和salary。该类显式声明了一个构造方法,该方法只有一个参数。程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。

下面给出EmployeeTest类,该类实例化2个 Employee 类的实例,并调用方法设置变量的值。

将下面的代码保存在 EmployeeTest.java文件中。

 

 

Java基本数据类型

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。

内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。

Java 的两大数据类型:内置数据类型、引用数据类型

内置数据类型

Java中提供了八种,六种数字类型、(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

引用数据类型

在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。

  1. 对象、数组都是引用数据类型。
  2. 所有引用类型的默认值都是null。
  3. 一个引用变量可以用来引用任何与之兼容的类型。

例子:Site site = new Site("Runoob")。

Java常量

常量在程序运行时是不能被修改的。在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

final double PI = 3.1415927;

当使用常量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制, 和其他语言一样,Java的字符串常量也是包含在两个引号之间的字符序列。

Java语言支持一些特殊的转义字符序列。

关于Java中的类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换从低级到高级,byte,short,char—> int —> long—> float —> double ,数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。
  2. 不能把对象类型转换成不相关类的对象。
  3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  4. 转换过程中可能导致溢出或损失精度,
  5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入

自动类型转换

必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

强制类型转换

  1. 条件是转换的数据类型必须是兼容的。
  2. 格式:(type)value type是要强制类型转换后的数据类型 

byte b = (byte)i1;//强制类型转换为byte

隐含强制类型转换

  1. 整数的默认类型是 int。
  2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。
  3. 这一节讲解了 Java 的基本数据类型。下一节将探讨不同的变量类型以及它们的用法。

Java 变量类型

Java语言支持的变量类型有:

  1. 类变量:独立于方法之外的变量,用 static 修饰。
  2. 实例变量:独立于方法之外的变量,不过没有 static 修饰。
  3. 局部变量:类的方法中的变量。

Java 局部变量

  1. 局部变量声明在方法、构造方法或者语句块中;
  2. 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  3. 访问修饰符不能用于局部变量;
  4. 局部变量只在声明它的方法、构造方法或者语句块中可见;
  5. 局部变量是在栈上分配的。
  6. 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

Java实例变量

  1. 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
  2. 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  3. 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  4. 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  5. 实例变量可以声明在使用前或者使用后;
  6. 访问修饰符可以修饰实例变量;
  7. 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  8. 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  9. 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

Java类变量(静态变量)

  1. 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  2. 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  3. 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
  4. 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
  5. 静态变量在第一次被访问时创建,在程序结束时销毁。
  6. 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
  7. 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  8. 静态变量可以通过:ClassName.VariableName的方式访问。
  9. 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

Java修饰符和运算符

修饰符是一种添加到定义以更改其含义的关键字。Java语言有各种各样的修饰符,包括以下两种 -

  1. Java访问修饰符 例如:private,protected,public等。
  2. Java非访问修饰符 例如:static,final等。

1. 访问控制修饰符

Java提供了许多访问修饰符来设置类,变量,方法和构造函数的访问级别。 四个访问级别是对包可见(default),不需要修饰符。仅对类可见(prive)。对所有可见(public)。对包和所有子类可见(protected)。

2. 非访问修饰符

Java提供了许多非访问修饰符来实现许多其他功能。用于创建类方法和变量的static修饰符。用于完成类,方法和变量的实现的final修饰符。用于创建抽象类和方法的abstract修饰符。synchronized和volatile修饰符,用于线程。

运算符分成以下几组需了解每个运算符具体规则可以参考

https://www.runoob.com/java/java-operators.html

  1. 算术运算符
  2. 关系运算符
  3. 位运算符
  4. 逻辑运算符
  5. 赋值运算符
  6. 其他运算符

 

Java循环结构

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。Java中有三种主要的循环结构:while 循环、do…while 循环、for 循环、while 循环。

1.while是最基本的循环,它的结构为:

while( 布尔表达式 )

{

//循环内容

}

只要布尔表达式为 true,循环就会一直执行下去。

2.do…while 循环,对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

do {

       //代码语句

}while(布尔表达式);

注意:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。

3.for循环

虽然所有循环结构都可以用 while 或者 do...while表示,但 Java 提供了另一种语句 for循环,使一些循环结构变得更加简单。for循环执行的次数是在执行前就确定的。语法格式如下:

for(初始化; 布尔表达式; 更新)

 {

//代码语句

 }

关于 for 循环有以下几点说明:

  1. 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  2. 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  3. 执行一次循环后,更新循环控制变量。
  4. 再次检测布尔表达式。循环执行上面的过程。

Java 增强 for 循环

Java5 引入了一种主要用于数组的增强型 for 循环。Java 增强 for 循环语法格式如下:

for(声明语句 : 表达式)

{

//代码句子

 }

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

运算结果:

break 关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。break 的用法很简单,就是循环结构中的一条语句:

break;

continue 关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在 for 循环中,continue 语句使程序立即跳转到更新语句。在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。continue 就是循环体中一条简单的语句:

continue;

 

Java条件语句if…else

if...else语句, if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。if…else 的用法如下:

if(布尔表达式)

{

//如果布尔表达式的值为true

 }

else

{

//如果布尔表达式的值为false

 }

if...else if...else 语句,if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。使用 if,else if,else 语句的时候,需要注意下面几点:

  1. if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
  2. if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  3. 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

if...else 语法格式如下:

if(布尔表达式 1)

{

                //如果布尔表达式 1的值为true执行代码

}

else if(布尔表达式 2)

{

//如果布尔表达式 2的值为true执行代码

 }

else if(布尔表达式 3)

{

 //如果布尔表达式 3的值为true执行代码 }

else

{

//如果以上布尔表达式都不为true执行代码

 }

嵌套的 if…else 语句

使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。 嵌套的 if…else 语法格式如下:

if(布尔表达式 1)

{

如果布尔表达式 1的值为true执行代码

if(布尔表达式 2)

{

如果布尔表达式 2的值为true执行代码

}

}

 

Java switch case用法

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch case 语句语法格式如下:

switch(expression)

{

 case value : //语句

 break; //可选

case value : //语句

break; //可选

//你可以有任意数量的case语句

 default : //可选

//语句

 } switch case

语句有如下规则:

  1. switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
  2. switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  3. case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  4. 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  5. 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  6. switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
  7. switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

实例

·

  1. 如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case。
  2. 如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。
  3. 如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。

参考文章:

https://www.runoob.com/java/java-basic-syntax.html

关于Java开发环境配置参考:

https://blog.csdn.net/Zachcc/article/details/94646514

Java基础

基础语法

Java是一种面向对象的语言,简单介绍下Java里所涉及到一些常见的名词。

  1. 对象
  2. 方法
  3. 变量
  4. 继承
  5. 封装
  6. 多态
  7. 封装

我们先重点研究对象和类。

  1. 对象:对象是类的实例化(这里对象不是你的女朋友,但是你得把它当成你女朋友才能给你对象买LAMER、YSL)。有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  2. 类:类是一个模板,它描述一类对象的行为和状态。

下图中男孩女孩为类,而具体的每个人为该类的对象

https://i-blog.csdnimg.cn/blog_migrate/bb4f2d475410bacfa9087716f22695ee.jpeg

Java中的对象

看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。对比现实对象和软件对象,它们之间十分相似。软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

 

Java中的类

类可以看成是创建Java对象的模板,简单定义下Dog这个类

Java中的变量

  1. 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  2. 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  3. 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

Java类的构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

Java中创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

  1. 声明:声明一个对象,包括对象名称和对象类型。
  2. 实例化:使用关键字new来创建一个对象。
  3. 初始化:使用new创建对象时,会调用构造方法初始化对象。

我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。

  1. 一个源文件中只能有一个public类
  2. 一个源文件可以有多个非public类
  3. 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
  4. 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
  5. 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
  6. import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
  7. 类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。

Java包

包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。import语句在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类

import java.io.*;

 

实例操作

第一个是Puppy类来表示小狗的形态和行为

第二个我们创建两个类:Employee 和 EmployeeTest。

Employee类有四个成员变量:name、age、designation和salary。该类显式声明了一个构造方法,该方法只有一个参数。程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。

下面给出EmployeeTest类,该类实例化2个 Employee 类的实例,并调用方法设置变量的值。

将下面的代码保存在 EmployeeTest.java文件中。

 

 

Java基本数据类型

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。

内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。

Java 的两大数据类型:内置数据类型、引用数据类型

内置数据类型

Java中提供了八种,六种数字类型、(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

引用数据类型

在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。

  1. 对象、数组都是引用数据类型。
  2. 所有引用类型的默认值都是null。
  3. 一个引用变量可以用来引用任何与之兼容的类型。

例子:Site site = new Site("Runoob")。

Java常量

常量在程序运行时是不能被修改的。在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

final double PI = 3.1415927;

当使用常量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制, 和其他语言一样,Java的字符串常量也是包含在两个引号之间的字符序列。

Java语言支持一些特殊的转义字符序列。

关于Java中的类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换从低级到高级,byte,short,char—> int —> long—> float —> double ,数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。
  2. 不能把对象类型转换成不相关类的对象。
  3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  4. 转换过程中可能导致溢出或损失精度,
  5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入

自动类型转换

必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

强制类型转换

  1. 条件是转换的数据类型必须是兼容的。
  2. 格式:(type)value type是要强制类型转换后的数据类型 

byte b = (byte)i1;//强制类型转换为byte

隐含强制类型转换

  1. 整数的默认类型是 int。
  2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。
  3. 这一节讲解了 Java 的基本数据类型。下一节将探讨不同的变量类型以及它们的用法。

Java 变量类型

Java语言支持的变量类型有:

  1. 类变量:独立于方法之外的变量,用 static 修饰。
  2. 实例变量:独立于方法之外的变量,不过没有 static 修饰。
  3. 局部变量:类的方法中的变量。

Java 局部变量

  1. 局部变量声明在方法、构造方法或者语句块中;
  2. 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  3. 访问修饰符不能用于局部变量;
  4. 局部变量只在声明它的方法、构造方法或者语句块中可见;
  5. 局部变量是在栈上分配的。
  6. 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

Java实例变量

  1. 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
  2. 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  3. 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  4. 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  5. 实例变量可以声明在使用前或者使用后;
  6. 访问修饰符可以修饰实例变量;
  7. 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  8. 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  9. 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

Java类变量(静态变量)

  1. 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  2. 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  3. 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
  4. 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
  5. 静态变量在第一次被访问时创建,在程序结束时销毁。
  6. 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
  7. 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  8. 静态变量可以通过:ClassName.VariableName的方式访问。
  9. 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

Java修饰符和运算符

修饰符是一种添加到定义以更改其含义的关键字。Java语言有各种各样的修饰符,包括以下两种 -

  1. Java访问修饰符 例如:private,protected,public等。
  2. Java非访问修饰符 例如:static,final等。

1. 访问控制修饰符

Java提供了许多访问修饰符来设置类,变量,方法和构造函数的访问级别。 四个访问级别是对包可见(default),不需要修饰符。仅对类可见(prive)。对所有可见(public)。对包和所有子类可见(protected)。

2. 非访问修饰符

Java提供了许多非访问修饰符来实现许多其他功能。用于创建类方法和变量的static修饰符。用于完成类,方法和变量的实现的final修饰符。用于创建抽象类和方法的abstract修饰符。synchronized和volatile修饰符,用于线程。

运算符分成以下几组需了解每个运算符具体规则可以参考

https://www.runoob.com/java/java-operators.html

  1. 算术运算符
  2. 关系运算符
  3. 位运算符
  4. 逻辑运算符
  5. 赋值运算符
  6. 其他运算符

 

Java循环结构

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。Java中有三种主要的循环结构:while 循环、do…while 循环、for 循环、while 循环。

1.while是最基本的循环,它的结构为:

while( 布尔表达式 )

{

//循环内容

}

只要布尔表达式为 true,循环就会一直执行下去。

2.do…while 循环,对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

do {

       //代码语句

}while(布尔表达式);

注意:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。

3.for循环

虽然所有循环结构都可以用 while 或者 do...while表示,但 Java 提供了另一种语句 for循环,使一些循环结构变得更加简单。for循环执行的次数是在执行前就确定的。语法格式如下:

for(初始化; 布尔表达式; 更新)

 {

//代码语句

 }

关于 for 循环有以下几点说明:

  1. 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  2. 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  3. 执行一次循环后,更新循环控制变量。
  4. 再次检测布尔表达式。循环执行上面的过程。

Java 增强 for 循环

Java5 引入了一种主要用于数组的增强型 for 循环。Java 增强 for 循环语法格式如下:

for(声明语句 : 表达式)

{

//代码句子

 }

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

运算结果:

break 关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。break 的用法很简单,就是循环结构中的一条语句:

break;

continue 关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在 for 循环中,continue 语句使程序立即跳转到更新语句。在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。continue 就是循环体中一条简单的语句:

continue;

 

Java条件语句if…else

if...else语句, if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。if…else 的用法如下:

if(布尔表达式)

{

//如果布尔表达式的值为true

 }

else

{

//如果布尔表达式的值为false

 }

if...else if...else 语句,if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。使用 if,else if,else 语句的时候,需要注意下面几点:

  1. if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
  2. if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  3. 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

if...else 语法格式如下:

if(布尔表达式 1)

{

                //如果布尔表达式 1的值为true执行代码

}

else if(布尔表达式 2)

{

//如果布尔表达式 2的值为true执行代码

 }

else if(布尔表达式 3)

{

 //如果布尔表达式 3的值为true执行代码 }

else

{

//如果以上布尔表达式都不为true执行代码

 }

嵌套的 if…else 语句

使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。 嵌套的 if…else 语法格式如下:

if(布尔表达式 1)

{

如果布尔表达式 1的值为true执行代码

if(布尔表达式 2)

{

如果布尔表达式 2的值为true执行代码

}

}

 

Java switch case用法

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch case 语句语法格式如下:

switch(expression)

{

 case value : //语句

 break; //可选

case value : //语句

break; //可选

//你可以有任意数量的case语句

 default : //可选

//语句

 } switch case

语句有如下规则:

  1. switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
  2. switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  3. case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  4. 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  5. 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  6. switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
  7. switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

实例

·

  1. 如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case。
  2. 如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。
  3. 如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。

参考文章:

https://www.runoob.com/java/java-basic-syntax.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值