java基础1 基本类型、数组、枚举类型和基本运算
1,标识符和关键字
标识符:
与C++特性类似,由字母,下划线,美元符号和数字组成
关键字:
abstract bool....
2,基本数据类型
常见的有8种,分别是boolean,byte,short,int,long,float,double,char
逻辑类型:true,flase,示例:boolean x,ok=true;
整数类型:
当把一个int型常量赋值给一个byte和short型变量时, 不可以超出这些变量的取值范围,否则必须进行类型转换运算;例如,常量128的属于int型常量,超出byte变量的取值范围,如果赋值给byte型变量,必须进行byte类型转换运算(将导致精度的损失),如下所示:
byte a = (byte)128;
byte b = (byte)(-129);
那么a和b得到的值分别是-128和127。
字符类型:采用unicode编码
浮点类型:不多赘述
基本类型转换:
按精度从低到高排列:
byte short char int long noat double
当把级别低的值赋给级别高的变量时,系统自动完成数据类型的转换。
需要特别注意的是,当把级别高的变量的值赋给级别低的变量时,必须要使用显式类型转换(强制转换)运算,例如:
对于int x= 1;byte y;y= (byte)x;是正确的,而y= x;是错误的。编译器不检查变量x的值是多少,只检查x的类型。
再比如:charc= 65;y= 65+32;是正确的,因为97在byte范围之内。而y= c+32;是 错误的,因为编译器不检查变量c中的值,并认为c+32的结果是int型数据(见第3章的3.1.3) 。
3,从命令行输入输出数据:
Scanner类在java.util包中(有关包的知识点将在第4章讲解),可以使用该类创建一一个对象:
Scanner reader=new Scanner(System.in);(输出则为System.out)
然后reader对象调用下列方法,读取用户在命令行输入的各种基本类型数据:
nextBoolean();nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble().
reader对象用空白做分隔标记读取用户在命令行输入的数据。
上述方法执行时读取数据时可能会发生堵塞状态(WAITING)。如果键盘缓冲区中还有“数据”可读,上述方法执行时就不会发生堵塞,否则程序需等待用户在命令行输入新的数据、按enter回车键确认(回车会刷新键盘缓冲区中的内容,消除堵塞状态)。
l例题:
用户在键盘用空格(或回年)做分隔,依次输入若干个数字,最后输入号字符回车健确认,程序将计算出这些数的和及平均值,运行效果如下图。
在调用nextint()方法前,可以reader对象首先调用hasNextlrt()来判断下一个数据是否是符合nextint(所要求的数据,如果符合要求,hasNextint()力 法返回true,否者近回false。注意,当nextint()成功读取数据后,hasNexint()方法才公判断下一个数据。
import java.util. Scanner;
public class Example2_3{
public static void main (String args[ ]){
System. out. printIn("用空格(或回车)做分隔,输入若干个数,最后输入#结束,\n然后回车确认");Scanner reader=new Scanner(System.in);
double sum=0;
int m=0;
while( reader.hasNextDouble()){
double x = reader. nextDouble();
m=m+1;
sum= sum+X;}
System. out. printIn(m+"个数的和为"+sum);
System. out.printIn(m+"个数的平均值”+sum/m);
}
}
4,数组
声明与创建数组
在Java中,可以通过以下方式声明数组:
声明并初始化数组:
int[] array = {1, 2, 3, 4, 5}; // 声明并初始化一个整数数组
String[] strArray = {"Hello", "World", "!"}; // 声明并初始化一个字符串数组
只声明数组:
int[] array; // 声明一个整数数组,但未初始化
String[] strArray; // 声明一个字符串数组,但未初始化
在声明的同时指定数组大小:
int[] array = new int[5]; // 声明并初始化一个大小为5的整数数组,所有元素默认值为0
String[] strArray = new String[3]; // 声明并初始化一个大小为3的字符串数组,所有元素默认值为null
使用数组字面量初始化多维数组:
int[][] multiArray = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}; // 声明并初始化一个二维整数数组
使用new关键字初始化多维数组:
int[][] multiArray = new int[2][3]; // 声明并初始化一个2x3的二维整数数组,所有元素默认值为0
请注意,在Java中,数组的大小是固定的,一旦声明并初始化,就不能改变其大小。如果你需要一个可以动态调整大小的集合,可以考虑使用ArrayList或其他Java集合类。
数组使用(length)
对于一维数组,“数组名字.length”的值就是数组中元素的个数;对于二维数组“数组名字.length”的值是它含有的
一维数组的个数。例如,对于
float a[] = new float[12];
int b[][]= new int[3][6];
a.length的值12;而b.length的值是3。
例:
复制数组
在Java中,复制数组可以通过多种方式来完成。下面列出了一些常见的方法:
1,使用 System.arraycopy 方法
System.arraycopy 是Java标准库提供的一个非常高效的方法来复制数组。这个方法可以在任意类型的数组之间进行复制,只要它们是对象引用类型或者基本类型。
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = new int[originalArray.length];
System.arraycopy(originalArray, 0, copiedArray, 0, originalArray.length);
// 现在copiedArray包含了originalArray的副本
2,使用数组的 clone 方法
每个数组对象都有一个 clone 方法,它可以用来创建数组的一个浅拷贝。这个方法返回一个新的数组,新数组和原数组具有相同的类型、长度和内容。
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = originalArray.clone();
// 现在copiedArray是originalArray的一个副本
3,使用 Arrays.copyOf 方法
Arrays 类提供了 copyOf 方法,它可以用来创建数组的一个副本,并且可以指定新数组的长度。如果新数组的长度大于原数组,那么多余的位置将用默认值填充(对于对象数组是 null,对于基本类型数组是 0 或其他类型的默认值)。
import java.util.Arrays;
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = Arrays.copyOf(originalArray, originalArray.length);
// 现在copiedArray是originalArray的一个副本
4,使用 Arrays.copyOfRange 方法
如果你只需要复制数组的一部分,可以使用 Arrays.copyOfRange 方法。这个方法接受原数组、起始索引(包含)和结束索引(不包含)作为参数。
import java.util.Arrays;
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = Arrays.copyOfRange(originalArray, 1, 4);
// 现在copiedArray包含{2, 3, 4}
5,使用循环
当然,你也可以通过编写一个简单的循环来复制数组的内容。
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = new int[originalArray.length];
for (int i = 0; i < originalArray.length; i++) {
copiedArray[i] = originalArray[i];
}
// 现在copiedArray包含了originalArray的副本
选择哪种方法取决于你的具体需求,比如性能、易用性和代码的可读性等因素。通常,System.arraycopy 和 Arrays.copyOf 方法是性能最好的选择,因为它们由JVM直接支持并且内部实现已经过优化。
5,枚举类型
使用关键字enum声明枚举类型,语法格式如下:
enum 枚举名
{常量列表}
例如:
enum Season
{ spring,summer,autumn,winter}
声明了名字为Season的枚举类型,该枚举类型有4个常量。
可以用枚举类型的枚举名声明一个枚举变量,例如:Season x;
声明了一个枚举变量x。枚举变量x只能取值枚举类型中的常量,通过使用枚举名和“.”运算符获得枚举类型中的常量,例如:
x = Season.spring;
6,运算符与表达式
与c++大体相同,判断返回值有区别:
>,<,>=,<=,==,1=
关系运算符是二目运算符,用来比较两个值的关系。关系运
算符的运算结果是boolean型,当运算符对应的关系成立时,
运算结果是true,否则是false。 例如,10<9的结 果是false,5> 1的结果是true, 3!=5的结果是true, 10>20-17的结果为true.
原文地址:https://blog.csdn.net/2303_76561497/article/details/136385811
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!