刚接触JAVA,求教个关于java数组的问题。

问题描述

for(inti=0;i<8;i++){String[]s=newString[i];}在java中,数组不是不可以同名的,但是在这个循环里,可以运行,不是每循环一次都从新NEW一个同名数组出来,为什么允许这样子来的,还有,这样子来新产生的数组跟之前产生的数组到底是个什么样子的关系,是包含,还是覆盖?如果是覆盖,那之前产生的数组里的内容是不是就废了???

解决方案

解决方案二:
s是局部变量,其作用域就是从定义的地方开始到for结束。所以每次循环结束时,在这次循环中定义的s已经变成垃圾了,也就是说变量s不指向该数组了。
解决方案三:
不是包含也不是覆盖。。。只是将将变量s指向了新分配的String数组的内存空间。。之前的丢失的内存JVM会自动回收
解决方案四:
每次循环都new一个新的数组覆盖,之前的会被回收掉~
解决方案五:
每次都会new,因此在堆里面会重新建立一块区域,新建的s和之前的是没有关系的,只是每次大小在变大,这个既不是包含,也不是覆盖。publicclassaaa{publicstaticvoidmain(String[]args){for(inti=0;i<8;i++){String[]s=newString[i];System.out.println(Arrays.toString(s));}}}

下面是打印结果:[][null][null,null][null,null,null][null,null,null,null][null,null,null,null,null][null,null,null,null,null,null][null,null,null,null,null,null,null]
解决方案六:
String[]s=newString[i];这句里s不是数组的名字,它只是一个变量,用来接收后面new出来的数组对象的引用。你每次new出来的数组的引用会覆盖前面的引用,导致以前的数组无法访问。短期内以前的数组还会存在于堆中,知道gc回收它。新数组跟以前的数组没有关系!~
解决方案七:
每次都产生一个新的数组,前面的string[]s只是一个引用,每次引用内存中产生的一个新的对象,前面的一个对象就成为了垃圾,等待jvm的垃圾回收机制自动回收。
解决方案八:
程序里面定义的S是一个局部变量啊,出了大括号就没意义了,下一次在new的时候不是前一次的s了,写出的代码:importjava.util.Arrays;publicclassTest{publicstaticvoidmain(String[]args){for(inti=0;i<8;i++){String[]s=newString[i];System.out.println(Arrays.toString(s));}}}输出地结果是:[][null][null,null][null,null,null][null,null,null,null][null,null,null,null,null][null,null,null,null,null,null][null,null,null,null,null,null,null]
解决方案九:
引用1楼hudie1234567的回复:

s是局部变量,其作用域就是从定义的地方开始到for结束。所以每次循环结束时,在这次循环中定义的s已经变成垃圾了,也就是说变量s不指向该数组了。

楼上准确
解决方案十:
string类是不可修改的类,不管你同不同名,在String池中都会new出来,但是表面上看起来是同名的,实际上有着不同的名字,如同C++的指针、引用一样
解决方案十一:
不是说数组不能有同名,而是在一定的范围内不能有重复的变量名程序设计语言有这样的规定,是因为重复的变量名会引起歧义

时间: 2024-08-03 13:50:10

刚接触JAVA,求教个关于java数组的问题。的相关文章

java-新人求助,刚接触JAVA

问题描述 新人求助,刚接触JAVA 代码三和代码应该填什么,求好心人... 解决方案 inputNumber1 = JOptionPane.showInputDialog(""输入数字?""); inputNumber2 = JOptionPane.showInputDialog(""输入数字?""); JOptionPane.showMessageDialog(null较大的实数是:""+(number1

java 关于扩展类 很基础的一个 刚接触java求指导

问题描述 java 关于扩展类 很基础的一个 刚接触java求指导 已经有了一个类 public class Person{ } 之后又有一个Person类的扩展类Student类 那么在 eslipse中编写程序时 是有两个类 对吧?那扩展类Student需要如何创建这个类啊? 解决方案 首先在eclipse中新建两个类,在其中一个类中写main方法写测试代码.测试要依据你的需求看怎么测了. 解决方案二: public Student extends Person{ //extends继承 }

新手求教,关于java压缩文件的问题

问题描述 新手求教,关于java压缩文件的问题 import java.io.*;import java.util.zip.*;public class Myzip { private void zip(ZipOutputStream outFile fString base) throws Exception{ if(f.isDirectory()){ File f1[]=f.listFiles(); out.putNextEntry(new ZipEntry(base+""/&qu

java网络编程错误java.net.ConnectException: Connection refused: connect求教

问题描述 java网络编程错误java.net.ConnectException: Connection refused: connect求教 刚开始学习java网络编程,在书上看到一段代码,就动手试一下,结果出现下面错误: java.net.ConnectException: Connection refused: connect 源代码如下: import java.io.*; import java.net.*; class lx01 { public static void main(S

Java基础-15总结对象数组,集合Collection,集合List

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. (2)案例: 用数组存储5个学生对象,并遍历数组. package cn.itcast_01;

java数组-java中的char类型数组怎么对其赋值?

问题描述 java中的char类型数组怎么对其赋值? 刚学期望得到大家回答,在网上没有搜索到,网上都是写string的用scanner.next().谢谢了 解决方案 String str="hahah"://创建字符串 char[] chArray=new char[10];//创建一个char空数组 chArray=str.toCharArray();//将字符串赋值进去 解决方案二: Scanner方法中没有直接读取character的方法,用String转换好了. 解决方案三:

java与c#中二维数组的区别

java中使用二维数组 public class Array2D...{ public static void main(String[] args)...{ int myInt[][]=new int[5][10]; //遍历,给数组中的每一个数组赋值 for(int i=0;i<myInt.length;i++)...{ for(int j=0;j<myInt[0].length;j++)...{ myInt[i][j]=i*j; } } System.out.println ("

Java 语法介绍(四):数组

1:数组说明 数组是Java语言中的特殊类型.它们存放能通过索引来引用的一系列对象,另外,你可以定义数组的数组,下面是一些示例: int i[]; char C[]; float f[][]; 2:数组运算符 在JAVA中数组的分配是通过使用new运算符建立数组然后把它赋给变量,如: int i[]=new int[10]; 前面这个例子建立了一个包括10个整型变量的数组并把它赋给i,你将得到按数字顺序的变量i[0],i[1],......,i[8],i[9],注意下标是从第一个元素的0开始,到

weblogic连接池-Java调用Oracle存储过程传入数组参数报错

问题描述 Java调用Oracle存储过程传入数组参数报错 weblogic连接池 JNDI提供的链接保存 Oracle数组 报错 oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 大家好,我在用weblogic连接池 JNDI

java文件输入问题-java中把整数数组的数据输入到文件中的问题

问题描述 java中把整数数组的数据输入到文件中的问题 我是java新手,把整形数组输入到文件中去为什么不是数字,是这些问号? 解决方案 BufferedWriter 用这个写 解决方案二: 写入的编码格式不对,用UTF-8格式试试 解决方案三: 我是用BufferedWriter写的啊 解决方案四: write(int c)这个方法其实输出的是c对应的character,会进行类型的转换,你可以看下输出的源码.如果你要输出整型的话,建议你后面加个空字符串输出吧,换成: bw.write(a[i