900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java基础语法之变量 运算符 流程控制 数组和方法等基础语法

Java基础语法之变量 运算符 流程控制 数组和方法等基础语法

时间:2020-03-03 20:43:38

相关推荐

Java基础语法之变量 运算符 流程控制 数组和方法等基础语法

变量、运算符、流程控制、数组和方法等基础语法。Java程序的执行流程,符合Java语法规则的程序。

1.1.1 Java初识

对Java进行简单介绍,Java程序如何执行,以及Java程序的结构。

Java简介,JDK(JAVA开发工具包)=开发工具集(javac编译器工具、java命令解释执行等组件)+JRE(JAVA运行时环境)=开发工具集+JRE(JVM+Java标准类库),开发程序必须使用JDK,运行开发完成的程序只需JRE,JVM(JAVA虚拟机)是JAVA平台无关性(LINUX、WINDOWS等操作系统)实现的关键,JVM完成解释执行.class字节码文件。JAVA有JAVASE(标准版Standard Edition,主桌面程序)、JAVAEE(企业版,主web程序)、JAVAME(微型版,主移动设备程序)三大平台。JDK的安装和环境变量(运行环境)配置,JAVA程序的执行过程(.java源程序文件-javac编译命令编译(.class字节码文件)-java解释执行命令执行(平台可以运行的程序)),eclipse开发集成软件(保存即实时编译生成.class文件,运行将.class文件变成平台可运行的文件)的安装和简单工程程序编写运行。

虚拟机VM(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

Java虚拟机(JVM,Java Virtual Machine)是一种用于计算设备的规范,它是一个虚拟出来的计算机,是通过在实际的计算上仿真模拟各种计算机功能来实现的。它屏蔽了与具体平台相关的信息,使JAVA语言编程程序只需生成在JVM上运行的目标代码(字节码),就可在多种平台上不加修改地运行。

1.1.2 Java常量与变量

Java的基本概念,包括标识符、关键字、数据类型、字面值、变量和常量等。

标识符简介:用户自定义的类名、方法名、变量名等,标识符命名规则:1可有数字、字母、下划线_、美元符$组成,开头不能是数字。2.区分大小写(如Void合法)。3.不能是JAVA的关键字(系统默认的标识符)和保留字(goto等)。4.最好反映其作用。类的命名规则:标识符命名规则、满足Pascal命名法规范(eg:Age、StuName每个单词首字母大写),变量名、方法名的命名规则:标识符命名规则、小驼峰命名法(eg:age、stuName、stuOfName多单词第一个单词首字母小写后面单词都字母都要大写)、简单明了、长度无限制。常量的命名规则:标识符命名规则、全部大写。

包名应该所有字母均小写。

变量(数据存储临时场所,保存在内存中):变量类型、变量名、变量值(可以是字面值或另外一个变量)。变量类型=数据类型=基本数据类型+引用数据类型,基本数据类型(共8个)=数值型+字符型(char(2字节))+布尔型(boolean(1)),数值型=整数类型(byte(1字节)、short(2)、int(4)、long(8))+浮点类型(float(单精度4字节)、double(双精度8)),引用数据类型(类)=类(class)+接口(interface)+数组。

1.字节:计算机存储和处理的最基本单元是字节。2.计算机是二进制存储(1byte=8位二进制数)。3.各种数据类型所占字节大小、数据范围(整数类型数据范围:-2(n位-1)~2(n位-1)-1)等不同。

字面值是常量的一种。

整型字面值(整型字面值默认情况下表示int类型,如表示long类型,则需在字面值后加l或L,eg:123L):Java中有三种表示整数的方法(进制表示只是一种表示形式):十进制、八进制、十六进制(eg:123(十进制),023(八),0x1345(十六),0X3c,0x1abcL(长整型或0x1abcl))

进制表示:八进制:以0开头,包括0-7的数字(eg:037、034).十六进制:以0x或0X开头,包括0-9的数字,及字母a-f,A-F(eg:0x12,0xAFFF)

变量声明:定义变量,格式(数据类型 变量名;)

赋值:使用“=”运算符进行赋值(左边必须是变量)

变量的初始化:在定义变量的同时给变量赋值。

局部变量必须要进行初始化才能进行运算。

浮点型字面值(浮点型字面值默认情况下表示double类型,也可在值后加d或D,eg:123.45、123.45d或123.45D。如表示float类型,则需在字面值后加f或F,eg:23.4f或23.4F)。

基本数据类型变量的存储:变量按类型分:数据类型分为基本数据类型和引用数据类型。引用数据类型包括类、接口、数组。类定义的变量又叫对象。

变量按照作用分:类级、对象实例级、方法级(局部变量)、块级

JAVA中对内存空间中分为:栈(局部变量存储在栈中)、堆、常量池等区域。

字符型字面值:字符型字面值用单引号内的单个字符(可以是汉字)表示(eg:’a’,’课’),定义字符型变量(char 变量名;char a=’b’;char ch=65(整型数据在一定范围内可以和字符型数据转换,依据ASCII编码,超过ASCII码的表示范围,会依据Unicode编码进行转化,在Java中一般使用标准的ASCII码表 一共127位, 在GBK编码下,规定127以上都是问号。);)。

char类型实际上是一个无符号的16位二进制的整数类型,取值范围0~65535;字符类型和整型可以相互转换;如果超过char类型的取值范围需要进行强制类型转换,但是会造成精度丢失。

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码):人们约定的一种编码,基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言(不能显示中文)。

ASCII码表示:一种字符编码,使用7位(标准ASCII码)或8位二进制数组合(后128位,扩展ASCII码)来表示128或256中可能的字符。标准ASCII码表示大小写字母、标点符号、美式英语中的控制字符等,扩展ASCII码表示特殊符号,外来语言的字母等。

Unicode编码:一种字符编码,又称为统一码、万国码,目标是支持世界上所有的字符集,Unicode编码表示法是在值前加前缀\u后跟4位16进制数(即2个字节大小,eg:\u534e)在Java中规定,Java可以直接使用的字符集就是Unicode,表示的格式是:’\u十六进制表示(前面去掉0x)’,例如"汉"这个字符的Unicode十六进制编码是"0x6c49",那么在Java直接使用为"\u6c49"即可,不需要添加0x。

布尔类型字面值:JAVA中布尔值只能定义为true和false(eg:boolean b=true;)

字符串字面值:字符串不属于基本数据类型(但和基本数据类型有些类似),它是类!字符串字面值用双引号引起来的0个或多个字符(字符串可以定义为空或包含Unicode字符的字符串!eg:在Unicode编码格式下,String s=”A\u005d\u005fB”;输出字符串s结果为“AB”加上对应Unicode编码中字符就是”A]B”)。

转义字符:\uxxxx(四位16进制数所表示的字符),\’(单引号字符),\’’(双引号字符),\(反斜杠字符),\r(回车),\n(换行),\t(横向跳格),\b(退格)

JAVA的输出语句中,数值/字符类型的值/变量A与字符型的值/变量B或数值类型的值/变量C相加会进行算数加法运算;若要避免字符型的值/变量(B/C)参与算数运算,应在数字型值/变量A与字符型值/变量B或数值型值/变量C相加之前先加上一个空字符串或其他字符串。

科学技术法表示浮点数(eg:1.23E8或1.34e-4)

类型转换:分为自动类型转换(隐式类型转换)和强制类型转换。

自动类型转换顺序(char转long也是自动的):

int与float,都是32位,但是内存结构即存储结构是不一样的,float使用的是科学计数法的方式表示范围的,远远大于int类型的存储范围,所以int转换成float是自动类型的转换,float只能有24位来确定精度,而int是32位,这时int转float类型可能会发生精度丢失。double有53位确定精度,大于int类型,所以,int转double不会出现精度丢失。因为一般浮点数的整数和效数部分都是用十进制表示的,所以float有效数字是78位,double有效数字是1617位。

强制类型转换(可能导致超出范围的值出现精度丢失):若A类型的数据表示范围比B类型大,则将A类型的值赋值给B类型,需要强制类型转换,格式:(B数据类型)A数值。

常量:不能变化的量,定义格式:final 数据类型 常量名=数值;(在定义变量的前面加上final关键字,且常量命名规范要全部大写,多单词之间用””链接)。

1.1.3 Java运算符

算术、赋值、逻辑和条件等常用运算符,以及简单的条件结构if和if-else。

表达式:由运算符和操作数组成(eg:1,a,a+b,c=e+f)。

运算符(程序中的所有数在计算机内存中都是以二进制的形式储存的,位运算就是直接对数在内存中的二进制位进行操作。):算数运算符,赋值运算符,关系运算符,逻辑运算符,条件运算符,位运算符。

赋值运算符(双目运算符,对两个操作数进行运算):从右往左运算,格式:变量=表达式;,赋值运算符“=”和复合赋值运算符:

字符串连接:当字符串与基本数据类型数据进行加法运算时,实际上是进行的字符串连接运算。如:String s=“Hello”+1; 则s的值是"Hello1",满足运算符优先级规则(一般从左到右运算,赋值运算符相反),eg:String s=1+2+“Hello”+’C’+false; 则s的值是"3HelloCfalse"(false是保留字)。

eg:a=3;是一个赋值语句,在执行完这条语句的时候,所有变量a的值都指向了3这个值,所以a+=a*=a; 表达式a的赋值表达式从右往左计算就是: 3+=3*=3; 最后的结果是12不是(C语言运行结果的18).**由于java运算是用栈实现的,虽然这里运算是从右向左,但计算机是从左往右读的,用栈来实现运算从右向左。**eg:a=a+(a+=a);先计算a+=a表达式,但是在计算之前就把第一部分表达式push进栈了,然后,逐一的弹出数据进行相应的数据运算,把运算结果再压入栈,然后再进行后续的运算,依次反复,所以,a在运算过程中没有变化,直到栈中数据全部计算完成,才将结果返回给a.

算数运算符(双目运算符):+加法,-,*,/(1.分子分母都是整型时,结果为整除后的结果。2.分子分母有整型和浮点型时,结果为浮点型。eg:13/5=2,13.0/5=2.6),%求余数(浮点数求余数,结果为浮点数),++自增1,–自减1.

自增自减运算符(单目运算符,只对一个操作数进行运算):

自增自减在前:先自增自减,后运算。自增自减在后:先运算,后自增自减。(即使自增自减在括号内,也是如此)

关系运算符:比较运算符用于判断两个数据的大小,如大于。比较的结果是一个布尔值。

条件结构:根据不同的条件执行简单的操作。if语句的形式:if(条件){<语句块>},if-else语句的形式:if(条件){<语句块>}else{<语句块>}.

从键盘接受一个整数(面向对象的知识):

Scanner x = new Scanner(System.in);//构造一个Scanner对象,其传入参数为System.in

int i = x.nextInt();//读取一个int数值并赋值给i

逻辑运算符(对一般表示条件的逻辑(true或false)进行运算,与位运算符不同,eg:!true=false,~是对二进制位按位取反。&和|运算符两边为整型数据/字符型值(字符型值实际也可看成无符号的16位二进制数)做的是位运算,两边是布尔值时用逻辑运算。):

Int n=3;

Int n=3;

逻辑非运算符:!运算符,对原条件进行取反

条件运算符(三目):语法:布尔表达式?表达式1(不能是赋值表达式):表达式2(不能是赋值表达式).当布尔表达式的值为true,则返回表达式1的值,否则返回表达式2的值。

运算符优先级:

从上到下,从左到右优先级逐减。(大体是:(逻辑非>算数运算符)算数运算符>关系运算符>逻辑运算符(逻辑非是特例)>赋值运算符)

1.1.4 Java流程控制之选择结构

选择结构,包括多重if与嵌套if结构 ,以及switch结构。

流程控制语句:顺序、选择、循环。

选择结构(为了规范和正确性,在if、else if、else后的语句都使用大括号{}包含语句块):

循环结构:

循环嵌套:循环内部有循环。

//单行注释 /注释的内容/多行注释

多重if:每一个if(或者else if)(最后一个else也是)都隐含了前面所有if(或者else if)的条件成立的共同非。

注意:boolean值是不能和整型数据1进行比较的,因此会出现编译错误

嵌套if结构:将整个if块插入另一个if块中。

if和switch的区别:if结构的判断条件是布尔类型并是一个范围。switch结构的判断条件是常量值。

switch结构(break语句和default语句都可以没有,break中止执行并跳出switch结构,default是前面条件都不满足才执行并且后面不需要break就可以跳出结构):

switch后面表达式不能是浮点型、布尔型,也不能是Long。

在结束时使用close();方法关闭对象,避免资源泄露,使程序更完善。(eg:sc.close();)

字符串中方法的调用:变量(这个变量是对象,是类数据类型定义的变量)=变量.toUpperCase(); 把字符串中的字母全部变为大写(注:字符串本身是引用数据类型中的类,类定义的变量是对象)

1.1.5 Java流程控制之循环结构

while循环、do-while循环、for循环和循环嵌套的使用。

Java流程控制三大结构:顺序结构:从上往下依次执行。选择结构,根据条件执行对应的内容。循环结构:循环反复执行。

循环结构:

break跳出当前循环结构。

while循环语法格式:while(循环条件){语句;},循环条件的值是布尔值。若循环体只有一条语句,大括号可省略。循环变量n的值必须先进行初始化。为避免死循环,小括号后不要加分号,循环变量n的值必须被改变。

JAVA中”^”不是表示几次方,而是表示按位异或运算符。

do-while循环:语法格式:do{语句;}while(循环条件);

Math.random();方法调用返回得到[1,0)之间的随机数

for循环:语法格式:for(表达式1;表达式2;表达式3){语句;}.其中式1是初始化循环变量,式2是循环条件,式3是循环变量变化表达式。注:式1在循环中只执行一次。执行流程:1-2(假设循环条件满足)-语句-3-2-语句-3,条件满足会重复执行2-语句-3。

局部变量只在定义它的大括号内有效

for循环注意事项:两个分号必须要。3个表达式都可省略,若只省略式1须在for语句前初始化循环变量,若只省略式2会一直执行循环体语句,除非循环体中有跳出循环结构的语句成立,若只省式3,且式2条件满足,会死循环,除非循环体语句中循环变量改变且不满足式2条件。

循环嵌套:循环内部有循环。

break语句不能在if选择结构中使用:

break语句只能在循环体内和switch语句体内使用。

continue语句(只能用在循环结构中):结束当前循环的执行,但继续执行下一次循环。

程序调试(debug):快捷键:F5进入函数,单步调试。F6不进入函数,单步调试。F7由函数内部返回调用处。F8一直执行到下个断点处。F11进入调试模式

步骤:(1)设置断点-双击代码所在行的左边蓝色区域。(2)执行调试-Debug As

多断点设置:快捷键F8:快速跳到下一个断点。注:当断点设置在循环体内部时,按F8会执行一次循环结束再次跳到下一次循环的该断点处(相当于在循环执行整体过程中的下个断点)直到整个循环结束。

1.1.6 Java数组之一维数组

一维数组的定义和使用,以及增强型for循环的应用,并能够实现冒泡排序。

数组:数组是相同类型的数据按顺序组成的一种引用数据类型。

一维数组内容:1.声明。语法格式:方式一(JAVA书写形式):数据类型[] 数组名; 方式二(C语言书写形式):数据类型 数组名[];

2.创建(C语言中声明和创建是一步不能分离,和赋值可以分离。).语法格式一:先声明后创建。数据类型[] 数组名; 数组名=new 数据类型[数组长度];注:关键字new是创建一个对象,常用在面向对象程序中。对于数组,new是创建一个数组。语法格式二:声明的同时创建数组。数据类型[] 数组名=new 数据类型[数组长度];注:数组长度必须指定。

数组在内存中的存储:数组会被分配连续的内存空间。注:局部变量没有默认值,使用前必须要先赋值。数组(本身是对象,数组名就是对象名,指向数组开辟空间的首地址,也可理解指向数组中的第一个元素)是有默认值的。对象数组默认值是null(即String[] strArray;strArray[2]==null),int数组默认值是0,float数组默认值是0.0

3.初始化,声明数组的同时给数组赋初值,叫做数组的初始化。eg:int[] arr={1,2,3};

4.数组元素的引用,数组元素下标从0开始。语法格式:数组名[下标];注:下标从0开始

5.长度:初始化时所给数组元素的个数。属性length表示数组的长度,如”数组名.length”。

6.数组的应用。

基本类型变量的声明和定义(初始化)是同时产生的;而对于对象来说,声明和定义是分开的。声明有2重含义:(1) 告诉编译器,这个名字已经匹配到一块内存上,下面的代码用到变量或者对象是在别的地方定义的。声明可以出现多次。(2) 告诉编译器,这个名字已经被预定了,别的地方再也不能用它来作为变量名或对象名。定义和声明的具体区别:所谓定义就是(编译器)创建一个对象,为这个对象分配一块内存,并给它取上一个名字,这个名字就是就是我们经常所说的变量名或对象名。最重要区别:定义创建对象并为这个对象分配了内存,声明没有分配内存。

数组的创建是分为静态初始化和动态初始化的。动态初始化(也就是创建)需要使用new关键字开辟数组需要的空间(eg:int[] a=new int[3];a[0]=1;a[1]=2;a[2]=3;)。静态初始化(声明的同时进行赋值)是会自己创建一个空间存储数据1,2,3,不需要使用new关键字(eg:int[] a={1,2,3}😉。

增强型for循环:只是操作数组中元素,而不使用索引的话,使用增强型for循环方便,代码简单。需要使用索引进行其它操作,建议用普通for循环。

使用foreach循环遍历数组arr,遍历的元素类型为int,每次遍历得到的值存入n中,当把数组arr中的值遍历一遍后,循环结束。

对变量a,b的值进行交换:

冒泡排序:对一组整数按照由小到大的顺序进行排序。

1.1.7 Java数组之二维数组

二维数组的定义和使用。

二维数组(相当于一个特殊的一维数组,二维数组的每行相当于一个一维数组,二维数组名指向第一行的数据,二维数组的列数可以不相等)的声明和创建:三种声明模式:int[][] a;int[] a[];int a[][];创建(可以只指定行数):a=new int[i][j];声明的同时创建:int[][] a=new int[i][j];

在JAVA中,空指针可以理解为对象已经定义了但是没有初始化。

初始化:声明的同时进行赋值。数组列数相同int[][] num1={{1,2,3,4},{2,1,3,4},{6,4,25,1}};num1.length表示数组行数,num1[0].length表示列数。数组列数不相同int[][] num2={{1,2,3,4},{2,1,3,4,7},{6,4,25}};num2.length表示数组行数,num1[0].length表示第一行的列数。

循环输出二维数组的内容(i,j分别表示行数、列数):for(int i=0;i<num.length;i++){for(int j=0;j<num[i].length;j++){内循环语句}}。还可以用双重增强型for循环输出二维数组。

总结:注意的问题:1.数组是引用数据类型。2.创建数组时,会开辟连续的内存空间。3数组长度使用length属性获取。4.数组元素的下标从0开始。5.数组下标越界问题

1.1.8 Java方法

方法的定义和调用,数组作为方法参数、方法重载、传值和可变参数列表等概念和应用。

方法(在此部分内容,只使用对象名调用方法,后面学习面向对象,介绍使用类名去调用静态方法):所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

注意:方法在类的内部定义。

方法名前加static为静态方法,否则为普通方法。1.普通方法使用对象名.方法名调用。2.静态方法使用类名.方法名调用(不同类之间方法调用,若在同一个类中,可直接用方法名调用)。

在Java中,main是JVM识别的特殊方法名,是程序的入口方法。main方法中的参数String args[] 是为开发人员在命令行状态下与程序交互提供了一种手段

在命令行窗口中执行javac编译过java文件后,再执行java命令的时候,在类名后跟的字符串会被自动当做参数传入main方法。多个参数可以以空格分隔。在程序中就可以接收它。例如这里Example1类的main方法仅是将接收到的参数输出了,显示效果如下:

方法的声明和调用:方法声明:语法格式:访问修饰符 返回类型 方法名(参数列表){方法体}

访问修饰符(public private protected 默认,还可以写其他的修饰符如static):方法允许被访问的权限范围

返回类型:方法执行完后返回值的类型。返回值可以是void(表示无返回值)以及任何数据类型

方法名:方法的名字,命名规则和变量的命名规则一样。

参数列表:格式:参数类型 参数名,参数类型 参数名;参数列表可以为空。参数类型不一定要和返回类型一样,但return语句的返回值的类型必须和返回类型一样。

方法分类:根据方法是否带参数、是否返回值,可分为四类:无参无返回值方法、无参带返回值方法、有参无返回值方法、有参有返回值方法

方法调用(在主方法中调用):

变量名和方法名可以一样,一般为表示区别,两者表达不一样。

数组作为方法参数:实参是数组名,形参格式:数据类型 数组名;

在方法中如果改变数组元素的值对原来的数组会产生影响,数组作为方法的参数传递时是类似C语言以数组指针的的方式传递,因为数组是对象,对象都是引用传递的,当传递对象时,其实传递的只是引用,实际地址指向的都是一个对象,所以更改会影响原对象。

方法的重载:在同一个类中,方法名相同,参数列表不同(参数类型和个数不同都可以,与返回类型是否相同无关)。避免方法调用记忆过多方法名和参数列表条件。

方法传值:参数的传递问题:基本数据类型的传值:方法调用前后主方法中传递的变量值没有改变。数组的传值:方法调用前后主方法中传递的变量值改变,因为传递的是数组引用,都指向同一个数组的内存空间。

可变参数列表(可变元参数):访问修饰符 返回类型 方法名(参数类型… 参数名){方法体},注:1.若参数列表中有两个以上的参数,可变参数一定是在最后的。2.一个方法中只能有一个可变参数。3.可以将数组传递给可变参数列表。4.在方法定义中,认为在同一个类中方法名相同参数列表数据类型相同的可变参数和数组的方法重复定义,而不是重载。5.数组作为方法的参数时,不能将多个值传递给数组的!

可变参数列表作为方法参数的重载问题:在重载中,可变参数列表所在的方法是最后被访问的

文档注释:/回车,注释信息对生成帮助文档添加说明(生成文档具体相关操作查看《关于javadoc命令的教辅》资料).

![在这里插入图片描述](https://img-/005739656.png#pic_center

在cmd中切换到类所在目录(快捷方式:直接在存放java文件的路径上面输入cmd)再使用javadoc命令生成文档,可以查看生成的doc文档中生成的index.html文件**。

在java中,javadoc即是一个命令,也是一个工具,使用javadoc可以提取程序中的文档注释来生成API文档

方法的调试:Debug模式中F5进入方法中,F7由方法内部返回调用处

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。