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.
 


 

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值