300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java是一门艺术讲究说学逗唱--Java基础语法

Java是一门艺术讲究说学逗唱--Java基础语法

时间:2023-07-17 12:19:32

相关推荐

Java是一门艺术讲究说学逗唱--Java基础语法

Java是一门艺术,它讲究说学逗唱,一起领略java语法的美

Java 版本概述

在 Java 这门语言体系当中,最基础的部分就是 Java SE 部分,Java 的标准版本。它包括 Java 最基础的一些结构,包括面向对象的一些特性等等,同时它也是 Java 技术基础和核心。在 Java SE 的基础之上,又分为了 Java EE(Java 的企业版),应用于大型企业级应用的开发。Java ME 主要用于嵌入式开发。

JVM 是 Java 虚拟机,它也是整个 Java 技术的核心。Java 语言的跨平台归功于 JVM。

JDK 是 Java 开发工具包,没有 JDK 就没有办法进行 Java 程序的开发。

JRE 是 Java 运行环境,如果我们需要运行一个 Java 程序,就需要安装 JRE。

JDK、JRE 和 JVM 之间的关系:

HelloWorld

public class HelloWorld{public static void main(String[] args){System.out.println("HelloWorld!");}}

Java 中所有的代码都必须包含在 class 中,main方法是程序的入口,并且 Java 是区分大小写的,如果写成 Main,那么程序将因找不到程序入口而无法运行。使用public修饰的class名(HelloWorld)必须和源代码文件名相同。

$ javac HelloWorld.java$ java HelloWorldHelloWorld!

编译源代码:打开命令行,切换到源代码目录。输入javac HelloWorld.java,如果程序没有任何提示,并且在同级目录下生成了一个.class扩展名的文件,那么说明编译成功,反之编译失败。

变量

在 Java 中,变量需要先声明 (declare) 才能使用。在声明中,需要包括数据类型和变量名称,语法格式与 C++ 相同。例如:

int a = 1;

常量

Java 中的final关键字可以用于声明属性(常量),方法和类。当final修饰属性时,代表该属性一旦被分配内存空间就必须初始化。在变量前面添加关键字final即可声明一个常量。在 Java 编码规范中,要求常量名必须大写。例如:

final double PI = 3.14;

常量也可以先声明,再进行赋值,但只能赋值一次,比如:

final int FINAL_VARIABLE;FINAL_VARIABLE = 100;

数据类型

数据类型

Java 中一共八种基本数据类型,下表列出了基本数据类型的数据范围、存储格式、默认值和包装类型等。

整数

byteshortintlong四种基本数据类型表示整数,需要注意的是long类型,使用long修饰的变量需要在数值后面加上 L 或者 l,比如long num = 1L;,一般使用大写L,为了避免小写l与数值1混淆。

浮点数

floatdouble类型表示浮点数,即可以表示小数部分。需要注意的是float类型的数值后面需要加上F或者f,否则会被当成double类型处理。double类型的数值可以加上Dd,也可以不加。

char 类型

char类型表示单个字符。需要将字符用单引号括起来char a = 'a';,char 可以和整数互相转换,如果字符a也可以写成char a = 97;。也可以用十六进制表示char a = '\u0061';

boolean 类型

boolean类型表示真值true或者假值false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将boolean类型的数据转换为int,使用 1 来表示true,0 来表示false。JVM 支持boolean数组,但是是通过读写 byte 数组来实现的。Java 中布尔值不能和整数类型或者其它类型互相转换。

String

Java 中使用String类来定义一个字符串,字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。

String对象的初始化格式有如下两种:

String s0 = "abc";String s1 = new String("abd");

String类具有丰富的方法,比如计算字符串的长度、连接字符串、比较字符串、提取字符串等等。

计算字符串长度

length()方法:

//方法原型public int length(){}

调用方法:字符串标识符.length();返回一个int类型的整数(字符串中字符数,中文字符也是一个字符)。例如:

String s1 = "abc";String s2 = "Java语言";int len1 = s1.length();int len2 = s2.length();

则变量len1的值是 3,变量len2的值是 6。

字符串比较

equals()方法,该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回true,否则返回false

equals()方法比较是从第一字符开始,一个字符一个字符依次比较。

如果想忽略掉大小写关系,可以调用equalsIgnoreCase()方法,其用法与equals()一致,不过会忽视大小写。而使用"=="比较的是两个对象在内存中存储的地址是否一样。例如:

String s1 = "abc";String s2 = new String("abc");boolean b = (s1 == s2);

则变量b的值是false,因为s1对象对应的地址是"abc"的地址,而s2使用new关键字申请新的内存,所以内存地址和s1"abc"的地址不一样,所以获得的值是false

字符串连接

字符串连接有两种方法:

使用+,比如String s = "Hello " + "World!"。使用String类的concat()方法。

例如:

String s0 = new String("Hello ");String s1 = "World" + "!"; //+号连接String s2 = s0.concat(s1); //concat()方法连接System.out.println(s2);

而且使用+进行连接,不仅可以连接字符串,也可以连接其他类型。但是要求进行连接时至少有一个参与连接的内容是字符串类型。

charAt() 方法

charAt()方法的作用是按照索引值(规定字符串中第一个字符的索引值是 0,第二个字符的索引值是 1,依次类推),获得字符串中的指定字符。例如:

String s = "abc";char c = s.charAt(1);

则变量c的值是'b'

字符串常用提取方法

说明:在字符串中,第一个字符的索引为 0,子字符串包含beginindex的字符,但不包含endindex的字符。如果参数只有beginindex,那么会提取从beginindex开始到结束的字符。

String Builder

String是无法被修改的,对String的修改,其实是新建了一个String对象。StringBuilder修改字符串的内容,相当于一个存储字符的容器。

初始化格式有以下三种:

# 构造一个不包含任何字符且初始容量为 16 的 StringBuilderStringBuilder a = new StringBuilder();# 构造一个不包含任何字符且容量为 cap 的 StringBuilderStringBuilder b = new StringBuilder(int cap);# 构造一个 StringBuilder,内容初始化为 strStringBuilder c = new StringBuilder(String str);

而第三种方法初始化的容量是初始容量 16 +str的长度。

StringBuilder 常用方法:

算术运算符

算术运算符用在数学表达式中,主要实现的是算术运算,如常见的加减乘除等。

表格中的例子中,变量a的值为 5,变量b的值为 3,变量i的值为 1:

其中,自增(++)和自减(--)运算符有两种写法:前缀(++i,--i)后缀(i++,i--)

前缀自增自减法(++i,--i):先进行自增或者自减运算,再进行表达式运算。后缀自增自减法(i++,i--):先进行表达式运算,再进行自增或者自减运算

位运算符

Java 定义了位运算符,应用于整数类型 (int),长整型 (long),短整型 (short),字符型 (char),和字节型 (byte) 等类型。位运算时先转换为二进制,再按位运算。

表格中的例子中,变量a的值为 60(二进制:00111100),变量b的值为 13(二进制:00001101):

逻辑运算符

逻辑运算符是通过运算符将操作数或等式进行逻辑判断的语句。

表格中的例子中,假设布尔变量a为真(true),变量b为假(false):

&&||是具有短路性质,当按优先级顺序计算到当前表达式时,表达式的结果可以确定整个表达式的结果时,便不会继续向后进行判断和计算,而直接返回结果。

关系运算符

关系运算符生成的是一个boolean(布尔)结果,它们计算的是操作数的值之间的关系。如果关系成立,结果为true(真),否则,结果为false(假)。

表格中的例子中,假设变量a为 3,变量b为 5:

除了上表列出的二元运算符,Java 还有唯一的一个三目运算符?:

语法格式:

布尔表达式 ?表达式 1 : 表达式 2;

运算过程:如果布尔表达式的值为true,则返回表达式 1的值,否则返回表达式 2的值。

强调

==!=适用于所有的基本数据类型,其他关系运算符不适用于boolean,因为boolean值只有truefalse,比较没有任何意义。==!=也适用于所有对象,可以比较对象的引用是否相同。

引用:Java 中一切都是对象,但操作的标识符实际是对象的一个引用。

运算符优先级

运算符的优先级不需要特别记忆,比较复杂的表达式一般使用圆括号()分开,提高可读性。

关键字和方法

关键字

Java 的关键字用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。其中,constgoto这两个关键字在 Java 语言中并没有具体含义。

方法的定义语法:访问修饰符 返回值类型 方法名(参数列表) {方法体}比如:public void functionName(Object arg) {System.out.println("Hello World.");}

在上面的语法说明中:

访问修饰符:代表方法允许被访问的权限范围, 可以是publicprotectedprivate或者省略(default) ,其中public表示该方法可以被其他任何代码调用。返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为void(代表无类型);如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用return语句返回值。方法名:是方法的名字,必须使用合法的标识符。参数列表:是传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。方法体:方法体包含具体的语句,定义该方法的功能。

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

无参无返回值方法无参带返回值方法带参无返回值方法带参带返回值方法

当方法定义好之后,需要调用才可以生效,可以通过main方法(main方法是 Java 程序的入口)来调用它。

流程控制

流程控制提供了控制程序步骤的基本手段,主要分为条件语句、循环语句和跳转语句。i

f 语句if 语句是一种判断语句,语法与 C++ 类似。语法:if(条件1){代码块1}else if(条件2){代码块2}...else {代码块n}

:所有的条件语句都是利用条件表达式的真或假来决定执行路径,Java 里不允许将一个数字作为布尔值使用,虽然这在 C 和 C++ 是允许的,如果要在布尔测试里使用一个非布尔值,需要先用一个条件表达式将其转换成布尔值,其他控制语句同理。

switch 语句

需要对选项进行等值判断时使用switch语句,语法与 C++ 类似。语法:

switch(表达式){case 值1:代码块1break;case 值2:代码块2break;...default:默认执行的代码块}

switch后表达式的值和case语句后的值相同时,从该位置开始向下执行,直到遇到break语句或者switch语句块结束;如果没有匹配的case语句则执行default块的代码。

defualt块不是必须的,默认为空。从 Java 7 开始,可以在switch条件判断语句中使用String对象。switch不支持longfloatdouble,是因为switch的设计初衷是对那些只有少数几个值的类型进行等值判断,如果值过于复杂,你们还是用if更加合适。

while 和 do-while 语句

while语法:

while(条件){代码块}

while的执行过程是先判断,再执行。

判断while后面的条件是否成立 (trueorfalse)当条件成立时,执行循环内的代码。

do-while语法:

do{代码块}while(条件);

do-while的执行过程是先执行一次,再循环判断(所以循环内的代码至少会执行一次)。

先执行一遍循环操作,然后判断循环条件是否成立。如果条件成立,继续执行12,直到循环条件不成立为止。

for 语句

for语法:

for(循环变量初始化; 循环条件; 循环变量值操作){循环操作}

其执行顺序理解方式也与 C++ 相同,无须赘述。

跳转语句

break关键字经常用在条件和循环语句中,用来跳出循环语句

continue关键字的作用是跳过循环体中剩余的语句执行下一次循环。

数组

数组是用于储存多个相同类型数据的集合。数组中的元素都可以通过下标来访问,下标从 0 开始,到数组长度 -1 结束。使用数组前要声明数组。语法:

数据类型[ ] 数组名; //或者: 数据类型 数组名[ ];

声明数组后,需要为数组分配空间,也就是定义多大的数组。

语法:

数组名 = new 数据类型 [ 数组长度 ];

数组长度就是数组最多可存放元素的个数。可以在数组声明的时候初始化数组,或者在声明时就为它分配好空间,这样就不用再为数组分配空间。

Java 中可以将一个数组赋值给另一个数组,如:

int [] a1 = {1,2,3};int [] a2;a2 = a1;

这里只是复制了一个引用,即 a2 和 a1 是相同数组的不同名称。所以当修改 a2 的值时,a1 的值也会变化。

数组遍历:

int [] a = {12, 18, 9, 33, 45, 60};for(int i = 0; i < a.length; i++){ // a.length是获取数组的长度System.out.println(a[i]); // 注意数组下标从零开始}

注意

数组下标从 0 开始。所以数组的下标范围是 0 至 数组长度 -1。数组不能越界访问,否则会报错。

for 语句在数组内可以使用特殊简化版本,在遍历数组、集合时,foreach更简单便捷。语法与 C++ 中的auto关键字类似。

语法:

for(元素类型 元素变量:遍历对象){执行的代码}

二维数组

二维数组也需要声明和分配空间。

语法:

数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];//或者数据类型 [][] 数组名;数组名 = new 数据类型[行的个数][列的个数];//也可以数据类型 [][] 数组名 = {{第一行值1,第一行值2,...}{第二行值1,第二行值2,...}...}//二维数组的赋值和访问与一维数组类似数组名[行的索引][列的索引] = 值;

用户输入操作

Java 可以使用java.util包下的Scanner类来获取用户的输入。使用import java.util.Scanner;即可导入 Scanner。如下示例:

import java.util.Scanner;public class RepeatString {public static void main(String[] args) {Scanner in=new Scanner(System.in);//获取用户输入的一行数据,返回为字符串String s = in.nextLine();System.out.println(s);//循环读取String数据,当输入exit时退出循环while (!in.hasNext("exit")) {System.out.println(in.nextLine());}//关闭输入in.close();}}

除去以上列举的方法,其他方法可以在 API 文档中查询:

Scanner (Java Platform SE 8 )/javase/8/docs/api/java/util/Scanner.html

Arrays

Arrays 类包含用于操作数组的各种方法(例如排序和搜索)。还包含一个静态工厂,允许将数组转为 List。

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