java里数组怎么定义,Java数组怎么定义
本文已经给大家带来了一些关于java的知识,包括数组的定义和使用,包括main方法中的String数组,数组中存储的引用数据类型,数组的扩展和复制等。下面就来看看吧,希望对你有帮助。
如何解决写爬虫IP受阻的问题?立即使用。
一维数组
包com . bjpower node . javase . array;
公共类ArrayTest01 {
公共静态void main(String[] args) {
//1.静态初始化
int[] a1={1,3,5,7,9 };
//所有数组对象都有length属性,而不是方法!
System.out.println(数组元素个数为: a1 . length );
//取第一个元素
system . out . println(a1[0]);
//取最后一个元素
system . out . println(a1[a1 . length-1]);
//更改数据
a1[a1 . length-1]=0;
//遍历数据
for(int I=0;i a1 .长度;i ){
system . out . println(a1[I]);
}
//数据下标越界,例如用下面的6访问数据元素。
//system . out . println(a1[6]);//ArrayIndexOutOfBoundsException
//2.动态初始化
int[]a2=new int[5];//默认值为0
for(int I=0;i a2 .长度;i ){
system . out . println(a2[I]);
}
//初始化Object类型的数组,
//1.采用静态初始化模式。
Object O1=new Object();
Object O2=new Object();
Object O3=new Object();
Object[] object={o1,o2,O3 };
//以上等价于:object [] object={newobject(),newobject(),new object()};
for(int I=0;io object . length;i ){
system . out . println(object[I]);//默认情况下调用toString方法
}
//2.采用动态初始化。
Object[] obj=新对象[3];
for(int I=0;iobj.lengthi ){
system . out . println(obj[I]);//空空空
}
//初始化字符串类型的数组
//1.静态初始化
String[] str1={abc , bcd , CDE };
for(int I=0;i str1 .长度;i ) {
system . out . println(str 1[I]);
}
//2.动态初始化
String[] str2=新字符串[3];
for(int I=0;I str 2 . length;i ) {
system . out . println(str 2[I]);
}
}
}动态存储内存图
方法的参数是数组
例1:
包com . bjpower node . javase . array;
公共类数组测试02 {
//也可以用C的风格,写成String args[]
公共静态void main(String args[]) {
system . out . println( hello world );
//1.参数传递方法的数组-静态初始化模式
int[] a={1,2,3,4,5 };
print array(a);
//2.方法的参数传递数组-动态初始化模式
int[]arr=new int[5];
打印数组(arr);
//直接一步完成
print array(new int[3]);
}
//打印的静态方法
public static void print array(int[]arr){
for(int I=0;长度;i ) {
system . out . println(arr[I]);
}
}
}例2:(掌握)
包com . bjpower node . javase . array;
公共类数组测试03 {
公共静态void main(String[] args) {
//- 1.动态初始化一位数组(两种传递参数的方式)
//第一个参数传递方法
int[]a1=new int[5];//默认为50。
print array(a1);
system . out . println(-);
//第二个参数传递方法
print array(new int[3]);
system . out . println(-);
//- 2.一位数组的静态初始化(传递参数的两种方式)
//第一个参数传递方法
int[] a2={1,2,3 };
print array(a2);
system . out . println(-);
//第二个参数传递方法——直接传递静态数组
printArray(new int[]{4,5,6 });
}
//静态方法调用——静态方法更方便,不需要新的对象。
public static void print array(int[]arr){
for(int I=0;长度;i ) {
system . out . println(arr[I]);
}
}
}
main方法中的String数组
例1:
包com . bjpower node . javase . array;
公共类数组测试04 {
//这个方法是程序员写的,JVM调用的。当调用JVM时,它必须传递一个字符串数组。
公共静态void main(String[] args) {
JVM默认传递的这个数组对象的长度?默认值为0。
//通过测试:args不为null。
System.out.println(JVM给传递的字符串数组参数,这个数组的长度是多少?
args . length);//0
//下面一行代码表示意思:创建了数组对象,但是数组中没有数据。相当于:
String[] strs=新字符串[0];//以动态的方式
//String[]strs={ };//静态初始化数组。里面什么都没有。
打印长度(strs);//调用printLength静态方法
/*
因为传递的“String[] args”数组中没有任何内容;那么这个数组什么时候会有值呢?
实际上,这个数组是为用户保留的。用户可以在控制台上输入参数,这个参数会自动转换成“String[] args”
比如这样运行程序:java ArrayTest04 abc def xyz;相当于在编译时传递参数。
此时JVM会自动用空格分隔“abc def xyz”,分隔完成后会自动放入“String[] args”数组中。
所以main方法上面的String[] args数组主要用来接收用户输入的参数。
将abc def xyz转换为字符串数组:{abc , def , xyz}
*/
//遍历数组
for(int I=0;I参数. length;i ) {
system . out . println(args[I]);
}
//既然参数是在编译时传递的,那么如何运用编译运行的思想呢?
//运行-编辑配置-程序参数,然后从后面重新运行。
}
public static void printLength(String[]args){
system . out . println(args . length);//0
}
}例2:
包com . bjpower node . javase . array;
/*
模拟一个系统。假设要使用这个系统,您必须输入用户名和密码。
*/
公共类数组测试05 {
公共静态void main(String[] args) {
//先判断长度,是否是两个字符串的长度,不是2直接终止程序。
if(args.length!=2){
System.out.println(请输入您的用户名和密码);
返回;
}
//取出用户名和密码
string username=args[0];
string password=args[1];
//假设用户名为admin,密码为123,登录成功。其他的都失败了。
//判断两个字符串是否相等,需要使用equals方法。
//if(username . equals( admin )password . equals( 123 ){//有可能是空指针异常。
//下面的写法也可以避免空指针的异常!
if(admin )。等于(用户名)“123”。等于(密码)){
System.out.println(恭喜您,登录成功);
System.out.println(您可以继续使用此系统);
}否则{
System.out.println(账号或密码错误,请重新输入);
}
}
}
数组中存储引用数据类型(重点)
包com . bjpower node . javase . array;
公共类数组测试06 {
公共静态void main(String[] args) {
//1.静态创建一个动物类型数组
动物a1=新动物();
动物a2=新动物();
Animal[] animals={a1,a2 };
//遍历动物数组
for(int I=0;一、动物.长度;i ) {
//方法1
/* Animal a=animals[I];
a . move();*/
//方法2
动物[我]。move();
}
//2.动态初始化长度为2的动物类型数组
Animal[] ans=新动物[2];
ans[0]=新动物();
//ans[1]=新产品();//呃,产品与动物无关。
//动物数组中只能存放动物类型,不能存放产品类型
//3.动物数组中可以存放猫类型的数据,因为猫是动物一个子类
ans[1]=new Cat();
for(int j=0;詹斯长度;j ) {
ans[j].move();
}
//4.创建一个动物类型的数据,数组当中存储猫和伯德
//4.1静态创建
Cat Cat=new Cat();
鸟鸟=新鸟();
动物[]anim={猫,鸟};
for(int I=0;我动画长度;i ) {
//直接调用子类和父类都有的移动()方法
//anim[i].move();
//这里想要调用子类伯德里面特有的方法,需要向下转型
如果(鸟的动画实例){
Bird b=(Bird)anim[I];//向下转型
乙。move();
乙。sing();//调用子类特有的方法
}否则{
动画,动画.move();
}
}
}
}
//动物类
动物类{
公共空的移动(){
System.out.println(动物移动.);
}
}
//商品类
类别产品{
}
//有一个猫类继承动物类
类别猫扩展动物{
公共空的移动(){
System.out.println(Cat move . );
}
}
//有一个鸟类继承动物类
类鸟延伸动物{
公共空的移动(){
System.out.println(Bird move .);
}
//鸟特有的方法
public void sing(){
System.out.println(鸟儿在歌唱!);
}
}
数组扩容和拷贝
包com。bjpower节点。贾瓦斯。数组;
公共类数组测试07 {
公共静态void main(String[] args) {
//java中的数组是怎样拷贝的呢?System.arraycopy(5个参数)
//System.arraycopy(源,下标,目的地,下标,个数)
//拷贝源-把3、5、7拷贝过去
int[] src={1,3,5,7,9 };
//拷贝目的地-拷贝到下标为5的地方
int[]dest=new int[20];
//调用拷贝函数
System.arraycopy(src,1,dest,5,3);
//打印验证
for(int I=0;我想。长度;i ) {
系统。出去。println(dest[I] );
}
//拷贝引用数据类型
String[] str={hello , world };
String[] strs=新字符串[10];
System.arraycopy(str,0,strs,3,2);
for(int I=0;我赞成。长度;i ) {
系统。出去。println(strs[I]);
}
系统。出去。println(-);
//采用动态开辟的时候拷贝的是地址
Object[] objs={new Object(),new Object(),new Object()};
对象[]对象=新对象[5];
System.arraycopy(objs,0,objects,0,3);
for(int I=0;i objects.lengthi ) {
系统。出去。println(objects[I]);
}
}
}内存图
推荐学习: 《java视频教程》 以上就是一起聊聊爪哇中数组的定义和使用的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。