Java

Java编程基础

2022-02-14  本文已影响0人  马佳乐

Java代码的基本格式

类的定义

所有的Java程序都是由类或者说是类的定义组成的。
一个Java源程序可以定义多个类(Class),但最多只能有一个类可以使用public来声明
类定义的一般格式:

修饰符   class  类名{
    成员变量声明;
    方法定义;
}

package语句:包声明

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。

包的作用

功能
java.lang 提供基本数据类型及操作
java.util 提供高级数据类型及操作
java.io 提供输入/输出流控制
java.awt 提供图形窗口界面控制
java.net 提供支持Internet协议的功能
java.applet 提供实现浏览器环境中Applet的有关类和方法
java.sql 提供与数据库连接的接口
java.rmi 提供远程连接与载入的支持
java.security 提供安全性方面的有关支持

创建包的一般格式:

package 包名
命名要注意唯一性,可使用WWW域名
如果package未指定,则所有的class都被组合到一个未命名的缺省package中不能被其他包中的类引用
package说明必须是非注释非空行的第一行
一个文件中最多只能有一条package语句。
包的名字有层次关系,各层之间以点分隔。包层次必须与Java开发系统的文件系统结构相同。通常包名中全部用小写字母
例如:package java.awt.image
在Window系统下,则此文件必须存放在java\awt\image目录下

(3)import语句:使用其他包中的class,需要导入包

使用import关键字导入包,语法如下:
import 包名.类名;
如:import java.util.*;
import java.util.Date;
用import 语句将此包中的某些或所有class加载入当前程序(此时导入的是包中的public类,而不是所有类,所以一般包内的允许被包外部使用的类应定义为public的
Java可有零个或多个import语句,若有,该类语句必须位于所有类定义之前
当源程序使用了除java.lang包以外的类时,无论是系统类还是自定义包中的类,都必须用import语句导入,以通知编译器在编译时找到相应的类文件。

(4)Java中的注释:

对程序的某个功能或者某行代码的解释说明,只在Java源文件中有效,编译程序时,编译器忽略这些注释,不将其编译到class字节码文件中。
单行注释:// 注释一行
多行注释:/* 一行或多行注释 */
文档注释:/** 文档注释 */
文档注释是对一段代码概括性的解释说明,一般出现在声明(如类的声明、类的成员变量的声明、类的成员方法的声明等)之前,会被Javadoc文档工具读取作为Javadoc文档内容。

(5)关键点:

Java中的程序代码可分为两种:

结构定义语句:用于声明一个类或一个方法
功能执行语句:用于实现具体功能,必须用英文半角分号结束

Java语言严格区分大小写。

Java程序中一个连续的字符串不能分开在两行中书写。

System.out.println(“这是第一个”+
    “Java程序”);

编写时,建议采用一种良好的格式进行排版:缩进

Java中的变量

应用程序将程序运行期间产生的数据保存在一些内存单元中,每个内存单元用一个标识符来标识。这些内存单元称为变量,定义的标识符就是变量名,内存单元中存储的数据即为变量的值。

int x=0,y;
y=x+3;

先声明,后使用
变量声明的语法形式如下:

变量数据类型  变量名1[=变量值1] [, 变量名2[=变量值2]…]; 

如: double area,r;

Java中的数据类型

基本数据类型

类型 所占字节数 描述 初始值
byte 1 8位有符号整数,取值范围:-128~127 (byte)0
short 2 16位有符号整数,取值范围:-32768~32767 (short)0
int 4 32位有符号整数,取值范围:-2147,483,648~2147,483,647 0
long 8 64位有符号整数,取值范围:-9.22E18~9.22E18 0
float 4 32位单精度浮点数,取值范围:1.4E-45~3.4E38 0.0
double 8 64位双精度浮点数,取值范围:4.9E-324~1.8E308 0.0
boolean 1 布尔数,只有两个值:true、false false
char 2 16位字符,取值范围:’\U0000’~’\Uffff’ ‘\u0000’

Java中的关键字

具有特定含义和用途,不能用作其他用途的字符序列

注意:

Java中的标识符

所谓标识符就是用来标识包名、类名、接口名、变量名、方法名、等的有效字符序列。
字母、下划线、美元符号和数字组成,并且第一个字符不能是数字,不能是Java中的关键字

一般标识符按照以下规则命名:

标识符尽量采用有意义的字符序列,便于从标识符识别出所代表的基本含义。

Java中的常量值

(1)整型常量:整数类型的数据

二进制:由数字0 和1 组成的数字序列,如:00110101。
八进制:以0开头并且其后由0 ~7范围(包括0和7)内的整数组成的数字序列,如:0342。
十进制:由数字0~9范围(包括0和9)内的整数组成的数字序列。如:198。整数以十进制表示时,第一位不能是0,0本身除外 。
十六进制:以0x或者0X开头并且其后由0~9、A~F(包括0和9、A和F)组成的数字序列,如0x25AF。
整型数字值的默认类型为int型,对超过int型范围的long型数字值后面必须加l或L。
如:long x=2147483649L;

(2)浮点数常量:

单精度浮点数:float,浮点数后面以F或f结尾
双精度浮点数:double,浮点数则以D或d结尾,或省略
可以使用后缀d或D明确表明一个double类型数据,不加“d/D”不会出错,但声明float型变量时若不加“f/F”,系统会认为变量是double类型而出错。
如:

double d1=2.6587d;
double d2=563.7;
float  f1=3.5f;

(3)字符常量:

字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号(' ') 引起来,它可以是英文字母、数字、标点符号、以及由转义序列来表示的特殊字符。

引用方法 对应Unicode码 意义
‘\b’ ‘\u0008’ 回退
‘\t’ ‘\u0009’ 水平制表符tab
‘\n’ ‘\u000a’ 换行
‘\r’ ‘\u000d’ 回车
‘\”’ ‘\u0022’ 双引号
‘\’’ ‘\u0027’ 单引号
‘\’ ‘\u005c’ 反斜线

空白字符,Java采用Unicode字符集,以“\u”开头。
'\u0000'

(4)字符串常量:

用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号(" ") 引起来
一个字符串可以包含一个字符或多个字符,也可以不包含任何字符,即长度为零。

(5)布尔常量:

布尔常量即布尔型的两个值truefalse,该常量用于区分一个事物的真与假。

(6)null常量:

null常量只有一个值null,表示对象的引用为空。

Java变量的类型转换

所谓类型转换就是将一种数据类型变量转变成另一种类型变量。
Java语言是一种强类型语言(类似于C++,而不是C语言)。当表达式中的数据类型不一致时,就需要进行数据类型转换。

①隐式类型转换:

编译程序在编译时可以自动执行类型转换;
低精度值可以直接赋给高精度变量,进行隐式类型转换。
数据精度从“低”到“高”为:
byte->short(char)->int->long->float->double
如:

int  i=100;
double x=i+10;

②显式类型转换:

必须在程序中显式地执行强制转换,强制转换的格式为:
(类型)表达式
高精度值则需要使用强制类型转换后赋给低精度变量,此时可能会导致数据精度的损失,也有可能导致结果出现较大错误。
如:int x=(int)34.89;
Java语言可以把字符作为整数对待,若想得到一个0~65536之间的数所代表的的Unicode表中的相应位置的字符,必须使用char型显式转换。

char word='d';
int p=23045;
System.out.println("d在Unicode表中的顺序位置是:"+(int)word);//100
System.out.println(“Unicode表中的第23045位是:"+(char)p);//娅

布尔类型不允许进行任何数据类型转换。

变量的作用域

Java中的运算符

算术运算符:

注意

关系运算符:

逻辑运算符:

赋值运算符:

赋值运算符“=”是双目运算符,左面的操作元必须是变量,结合性从右到左(运算顺序从右向左,将右边表达式的结果赋值给左边的变量)
赋值表达式:变量=表达式
复合赋值运算符:+=、-=、*=、/=、%=

位运算符:

运算符 表达式 描述
& op1&op2 二元运算,逻辑与,若两个操作数对应位都为1(true),则该位的结果为1(或true),否则为0(或false)
| op1 | op2 二元运算,逻辑或,若两个操作数对应位都为0(false),则该位的结果为0(或false),否则为1(或true)
^ op1^op2 二元运算,逻辑异或,若两个操作数对应位的值相反,则该位的结果为1(或true),否则为0(或false)
~ ~op1 一元运算,对数据的每个二进制位按位取反
<< op1<<op2 左移,二元运算,操作数op1按位左移op2位,每左移一位,左边的高阶位上的0或1被移除丢弃,并用0填充右边的低位
>> op1>>op2 右移,二元运算,操作数op1按位右移op2位,每右移一位,右边低阶位上的0或1被移除,如果最高位是0,用0填充左边的高位,如果最高位是1,用1填充左边的高位
>>> op1>>>op2 无符号右移,二元运算,操作数op1按位右移op2位,无论最高位是0还是1,左侧被移空的高位都填入0

条件运算符:

条件运算符是一个3目运算符,符号是:" ? : "
条件表达式格式:op1?op2:op3
要求第一个操作元op1的值必须是boolean型数据。
运算法则是:当op1的值是true时,运算的结果是op2的值;当op1的值是false时,运算的结果是op3的值。
Java要求:op2与op3必须同类型 。
例如,12>8?100:200的结果是100;12<8?100:200的结果是200。

instanceof运算符:

该运算符是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算的结果是true,否则是false。

Java中的流程控制语句

结构化程序设计的三种基本控制语句

顺序

(1)输出语句:

System类:在其提供的设施中,有标准输入、标准输出和错误输出流。

(2)输入语句:

Scanner类:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
一般应用格式:

    Scanner sc=new Scanner(参数);
    sc.nextXXX();

分支语句

Switch开关语句:

循环语句

1.while循环

    while(表达式)
        { 若干语句 }  

while、do…while的“表达式”必须是一个求值为boolean型数据的表达式

2.do while循环

    do while
        { 若干语句
        } (表达式);

3.for循环

    for (表达式1;表达式2;表达式3)
        { 若干语句 }

“表达式2”必须是一个求值为boolean型数据的表达式

跳转语句

(1)break语句:

在switch语中,break语句用来终止switch语句的执行。使程序从switch语句后的第一个语句开始执行。
跳出所指定的循环,并从紧跟该循环的第一条语句处执行。
跳出它所指定的代码块,并从紧跟该代码块的第一条语句处执行。

说明:一个代码块通常是用大括号{}括起来的一段代码。加标号的格式如下:

        BlockLabel: { 代码块 }

break在循环中的使用形式:
break; //不带标签,使程序跳出它所在的那一层循环结构
break Label; //带标签,使程序跳出标签所指示的循环结构,标签必须紧挨着所要跳出循环的开始部分。

(2)continue语句:

只能在循环体中使用,用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。
continue语句的使用格式为:
continue; //不带标签,终止当前循环结构的本轮循环而直接开始下一轮循环。
continue Lable; //带标签,把程序直接转到标签所指的循环结构的下一次循环,而不管被它嵌套的以及continue语句所在的循环结构运行到了哪个环节。

continue标号语句和break标号语句的比较

相同点:

都必须用在循环中,用于流程控制;
执行这两个语句时,若后面还有其他语句,将不再继续执行。

不同点:

continue语句的标号必须位于封闭的循环语句的前面
break语句的标号只需位于封闭语句的前面,但不一定是循环语句

return语句:

作用:return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。
使用格式:

    return expression ; //退出方法并返回值
    return;             //退出方法 

return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中

上一篇 下一篇

猜你喜欢

热点阅读