Java语言的一些基础知识(下)

编程入门 行业动态 更新时间:2024-10-08 20:32:41

Java语言的一些<a href=https://www.elefans.com/category/jswz/34/1769428.html style=基础知识(下)"/>

Java语言的一些基础知识(下)

Java语言的一些基础知识(下)

目录

​ 字符串

​ 输入与输出

​ 控制流程

​ 大数

​ 数组

字符串

从概念上讲,Java字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,很自然地叫做String

//字符串"Java\u2122"由5个Unicode字符 J,a,v,a和 ™ 组成
String e ="";//an empty string
String greeting = "hello";

子串

String类的substring方法可以从一个较大的字符串中提取出一个子串。

Java字符串中的代码单元和代码点从0开始计数

String greeting = "hello";
String s = greeting.substring(0,3);//长度为后者减去前者,即3-0=3
//substring从0开始计数,直到3为止,但不包括3,这里输出的值是"hel"

拼接

Java语言允许使用 + 号连接(拼接)两个字符串。

当一个字符与一个非字符的数据进行拼接时,后者会转换为字符串(任何一个Java对象都可以转换为字符串),这种特性通常用在输出语句中。

如果需要把多个字符串拼接在一起,用一个界定符分隔,可以使用静态join方法

	String a = "Just";String b = "Beefcake";String c = a + b;System.out.println(c);//输出结果为JustBeefcakeint age = 20;String K = "ThatYear" + age;System.out.println(K);//输出结果为ThatYear20String all = String.join("/","handsome","brilliant","smart");System.out.println(all);//输出结果为handsome/brilliant/smart

不可变字符串

String类中没有提供修改字符串中某个字符的方法,所以Java文档中间String类对象称为是不可变的。如此便体现出一个优点:编译器可以让字符串共享。

如需要将上述代码中 b 的值改变为"Beef!",不能直接将它的后面四个字符修改为’!’,这里可以使用上面讲过的字符串的拼接。

检测字符串是否相等

可以使用equal方法检测两个字符串是否相等,如果两个字符串相等,则返回true,否则,返回false。

		String m = "hello";String n = "hello";boolean b =  m.equals(n);boolean c =  "hello".equals(n);//字符串可以是变量,也可以是常量System.out.println(b);//输出结果为trueSystem.out.println(c);//输出结果为true

注意:一定不要使用"=="运算符去检测两个字符是否相等! 这个运算符只能够确定两个字符串是否存在同一个位置上。

空串与Null串

空串""是长度为0的字符串,它是一个Java对象,有自己的串长度(0)和内容(空)。

String变量还可以存放一个特殊的值,名为null,表示目前没有任何对象与该变量关联。

if(str.length()==0)或if(str.equals(""));//检验字符串是否为空
if(str == null)或if(str.length() != 0 && str != null)//检验字符串既不为空也不为Null

输入与输出

读取输入

将输出打印到"标准输入流"(即控制窗口)是一件很容易的事情,只要调用System.out.println即可。

读取"标准输入流"就不是一件很简单的事情了。要从控制台输入,首先要构造一个与"标准输入流"System.in关联的Scanner对象。

public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("what is you name?");String name = in.nextLine();//输入行中可能包含空格,所以要用nextLine()方法System.out.println(name);String firstName = in.next();System.out.println(firstName);String lastName = in.next();System.out.println(lastName);}
//输出结果为:
XiHai Shenge//输入
XiHai Shenge//输出
XiHai Shenge//输入
XiHai//输出
Shenge//输出//上面第二次采用next()输入时,中间包含了空格,第二次输入就此中断,空格之后就是第三次输入

格式化输出

Java 5 沿用了C语言函数库中的printf方法,每一个以%字符开始的格式说明符都用相应的参数代替,格式说明符尾部的转换符指示要格式化的数据的类型:

转换符类型示例
f浮点数5.33
c字符A
s字符串xiHai
d十进制整数500
o八进制整数237
x十六进制整数8f
e指数浮点数1.59e+01
n与平台有关的换行符。

另外,我们经常会看到在语句中会出现这样的字段"%8.2f",这表示的是所要输出的数据的宽度为8个字符,另外精度为小数点后2个字符。

public static void main(String[] args) {System.out.printf("%.3f\n", 10.0 / 3.0);//3.333System.out.printf("%tF\n", new Date());//2021-03-23}
//tF这里用到了日期和时间的转换符,大家可自行翻阅相关书籍

文件输入与输出

请自行搜索数据流和File类的相关知识和用法

控制流程

Java 的控制流程结构与C/C++的流程控制一样,只有很少例外情况。Java中没有goto语句,但break语句可以带标签,可以利用它从内层循环跳出。

块作用域

块(即复合语句)是指由若干条Java语句组成的语句,并用一对大括号括起来。块确定了变量的作用域,并且块可以嵌套使用。但是不能再嵌套的块中声明同名的变量。

条件语句

在Java中条件语句的格式为if(aondition) {statement1;....;}else{statement5;......},这里的条件必须用小括号括起来,可单独用if语句,y也可if else语句,还可以进行嵌套使用。

循环

for 循环:

初始表达式可以省略,但必须保留分号(😉,条件表达式一般不可省略,极有可能造成无限循环。

循环表达式也可以省略,但循环体中要有能够使循环变量中能够正常结束的条件。

for循环确定了循环次数,而while/do while没有

初始表达式,循环表达式可以使用逗号表示,如初始化多个变量等。

if(初始表达式;条件表达式;循环变量表达式){循环语句;
}

while循环:

在最前面检验循环条件,因此循环体中的代码有可能一次都不执行。

while(条件表达式){循环语句;循环变量表达式;
}

do while循环:

这种循环语句先执行语句,再检测条件,循环中语句必执行一次。

do{循环语句;
}while(条件表达式);

多重选择语句:switch语句

在处理多个选项是,使用if/else语句显得有些笨拙,Java中提供了与C/C++中一样的switch语句。

switch语句从与选项值(常量表达式)相匹配的case标签开始执行直到遇到break语句或执行到switch语句的结束为止为止。如果没有相匹配的case标签,而又default子句,就执行这个子句。

在case语句末尾没有break;将会接着执行下一个case语句。

switch(表达式){case 常量表达式:语句序列;break;case 常量表达式:语句序列;break;......
}

中断控制流程的语句

break 语句

public static void main(String[] args) {int month = 3;while(month <12) {int value = 12 - month;System.out.println("New Year's Day is still " + value + "months away!");if (month == 6) {System.out.println("Let's take a summer vacation");break;//不带标签的break语句,跳出循环}month++;}}
    public static void main(String[] args) {int m = 0;int n = 0;label://用冒号while(true){System.out.println("循环1");while(true){System.out.println("循环2");while(true){System.out.println("循环3");if ( m*n == 36){break label;//带标签的break语句,跳转到标记处}n++;m++;}}}}

continue 语句

将控制转移到最内层循环的首部。

public static void main(String[] args) {Scanner in = new Scanner(System.in);for (int count = 1;count <= 10;count++){System.out.println("请输入一个正数");int n = in.nextInt();if (n < 0)continue;//continue跳转到count++int sum = 0;sum += n;System.out.println(count);}}
/*控制台的输出结果为
请输入一个正数
-2
请输入一个正数
-1
请输入一个正数
0
3*/

大数

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中两个很有用的类:BigInteger和BigDecimal,这两个类可以处理包含任何长度数字序列的数值。BigInteger实现任何精度的整数运算,BigDecimal实现任何精度的整数运算。

BigInteger a= BigInteger.valueOf(100);//静态valueOf方法将普通数值转换为大数
BigInteger reallyBig = new BigInteger("1232423421345465768983766876598978609");
//对于更大的数,可以使用一个带字符串参数的构造器
BigInteger b= BigInteger.valueOf(260);
BigInteger c = a.add(b);//c = a + b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));//d = c*(b+2)

不能使用算术运算符处理大数,而是要使用大数类中的add和multiply方法

数组

数组存储相同类型的数列。

声明数组

数组是一种数据结构,用来存储同一类型值的集合,通过数组下标可以访问数组中的每一个值。

在声明数组时,需要指出数组类型和数组变量名字。如int[] a 或 int a[],但是这只是声明了变量a,而没有将a初始化为一个真正的数组,应该使用new操作符创建数组。

int[] a = new int[];//声明并初始化一个可以存储100个整数的数组
int[] smallPrimes = {2,3,4,5,6,7,8,9};//简写形式
new int[] {23,45,37,89}//匿名数组
smallPrimes = new int[] {23,45,37,89}//重新初始化一个数组而无需创建新变量

还有一种创建数组对象并同时提供初始值的简写形式,如上smallPrimes。这里不需要使用new,也不需要指定长度。

还可以声明一个匿名数组。

在数组中允许有长度为0的数组,它与null并不一样。访问数组元素。

访问数组元素

创建数组元素时,所有元素都初始化为0。boolean数组的元素会初始化为false。对象数组的元素则会初始化为一个特殊的值null,表示这些元素还未存放任何对象。

public static void main(String[] args) {int[] a = new int[10];for (int i = 0; i < 10; i++) {a[i] = i;//数组的遍历和赋值System.out.println(a);//输出数组元素的首地址System.out.println(a[i]);//输出数组元素的值}int count = a.length;//获取数组中元素个数,即数组长度System.out.println(count);}

for each 循环

增强for循环,可以用来依次处理数组中的每一个元素,而不必考虑指定下标志

格式:for(variable: collection) statement

其中collection这一集合表达式必须是一个数组或一个实现了Iterable接口的类对象。

public static void main(String[] args) {int[] a = new int[10];for (int element :a) {System.out.println(element);//输出10个数都是独占一行且值为0}}

for each循环更加简洁、更不易出错,不必为下标的起始值和终止值而操心。

多维数组

多维数组使用多个下标访问数组元素,适用于表示表格或更加复杂的排列形式。

二维数组的定义格式为:<类型标识符> 数组名[行元素个数][列元素个数],可以利用循环嵌套的方式对其进行遍历和赋值。

for each 循环语句不能自动处理二维数组的每一个元素,它会循环处理行,要想处理整个数组,同样需要嵌套。

三维数组也是这样的处理方式。

返回顶部

更多推荐

Java语言的一些基础知识(下)

本文发布于:2024-02-14 12:01:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763220.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础知识   语言   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!