数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同。但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构。尽管Java提供了很棒的集合API和集合类如:ArrayList、HashMap,他们内部都是基于数组。如果你是来自于基于c或c++背景的程序员,那么你会发现一些关于数组的行为和如何在Java工作中的异同。最值得注意的是C中的数组与Java中的数组的边界检查,c编译器不检查如果程序访问无效的数组索引,而java如果程序尝试访问无效的数组索引的话jvm会抛出ArrayIndexOutOfBoundException。在这篇文章中,我们看看Java中的数组,包括原生类型和对象类型的数组,小编下面就介绍些有关Java数组及属性的知识点。
Java数组101
(译注:101指介绍某件事,读者不需要任何预备知识)
1
---数组在Java中是一个对象,数组实例同样是使用new操作符创建的。Array.length指定了数组长度,例如:
int[] intArray = new int[10];
System.out.println(intArray.length)
Output: 10
Array.length 表示数组的容量,只要数组创建了,每一个索引被初始化为默认值。
2
---数组索引起始为0,负数索引在Java中是无效的,会抛出ArrayIndexOutOfBoundException ,如果你尝试用无效的索引访问数组,这个无效的索引可能是一个负索引,或者是大于等于数组长度的索引。
3
---数组存储在Java堆的连续内存空间,所以如果你创建一个大的索引,你可以有足够的堆空间直到抛出OutofmemoryError,因为请求的内存大小在连续的内存空间不可用。
4
---数组一个固定长度 的数据结构,一旦声明,你不能改变数组的长度。
5
---不同类型的数组有不同的类型,例如下面例子,intArray.getClass不同于floatArray.getClass
int[] intArray = new int[10];
float[] floatArray = new float[10];
6
---你不能存储double值在int数组中,否则导致编译错误。
int[] intArray = new int[10];
intArray[5]=1.2; //compilation error
如果尝试在运行时做这个操作,那么Java抛出ArrayStoreException
7
---在Java数组中可以有不同方式的创建方式,这里就是创建数组的例子:
int[] intArray; //creating array without initializing or specifying size
int intArray1[]; //another int[] reference variable can hold reference of an integer array
int[] intArray2 = new int[10]; //creating array by specifying size
int[] intArray3 = new int[]{1,2,3,4}; //creating and initializing array in same line.
你既可以选择在创建数组的时候初始化数组,也可以以后通过for循环初始化,中括号既可以在变量的前面也可以在变量后面。
第一种方法是方便的创建多个数组如:
int[] array1, array2
这里的array1和array2是整型数组,而第二种方法你需要放两次括号如:
int array1[], array2[]
尽管在风格上没有很多不同,我读“int[] ”叫int数组,这种写法更容易被理解。
8
---如果没有明确的初始化数组元素,那么数组就会用默认的类型值初始化,例如假若没有初始化整型数组,元素都将默认值为0,没有初始化的boolean值是false,对象数组是null。
9
---你可以通过使用[]操作符访问数组元素,因为数组索引起始于0,[0]返回第一个元素,[length-1]返回最后一个元素,for循环是一种迭代整个数组便捷方法。你可以使用for循环初始化整个数组、访问的每个索引或更新、获取数组元素。Java5同样提供了加强的for循环,数组自己管理索引,防止ArrayIndexOutOfBoundException,这里是一个迭代的例子:
传统的方式:
int[] numbers = new int[]{10, 20, 30, 40, 50};
for (int i = 0; i < numbers.length; i++) {
System.out.println("element at index " + i + ": " + numbers[i]);
}
Output:
element at index 0: 10
element at index 1: 20
element at index 2: 30
element at index 3: 40
element at index 4: 50
加强的for循环
for(int i: numbers){
System.out.println(i);
}
Output:
10
20
30
40
50
正如你看到的,加强的for循环不需要检查数组索引,如果你想逐个地访问所有的元素这是一种很好的方法,但是同时因为你不能访问索引,你就不能修改数组元素。
10
---Java中数组可以轻易的转换成ArrayList。ArrayList一个基于索引的集合,它是作为数组的备选方案。ArrayList的优点是可以改变容量大小,只需要创建个更大的数组然后拷贝内容到新数组,但你不能改变数组的大小。
11
---Java API同样提供了一些便捷方法通过java.utils.Arrays类去操作数组,通过使用Arrays你可以排序数组,你可以做二分搜索。
12
---java.lang.System类提供了实用方法拷贝元素到另一个数组。在拷贝内容从一个数组到另一个数组的时候System.arrayCopy非常强大和灵活。你可以拷贝整个或子数组,具体看你的需求。
System.arraycoy语法:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
如你所见,arraycopy允许我们指定索引和长度,能很灵活给你拷贝子数组和存储到需要的位置或目标数组。这里是一个例子,拷贝前三个元素到目标数组:
public static void main(String args[]) {
int[] source = new int[]{10, 20, 30, 40, 50};
int[] target = new int[5];
System.out.println("Before copying");
for(int i: target){
System.out.println(i);
}
System.arraycopy(source, 0, target, 0, 3);
System.out.println("after copying");
for(int i: target){
System.out.println(i);
}
}
Output:
Before copying
0
0
0
0
0
after copying
10
20
30
0
0
你可以看到拷贝之前所有元素是0,之后前三个元素被替换了。
99
Java编程到底怎么学?
枯藤老树昏鸦
空调可乐西瓜
泡在泳池避暑
夕阳西下
回家去学Java
Java编程到底怎么学呢?现在工作越来越难找,而Java程序员好像是公认的高薪职业,于是越来越多的人都开始学习Java,年纪大的有40多的,小的只有10几岁,都拼命往这个方向靠,有的报了培训班,有的自学,没有说哪一种方法是最好的,只有正确的方法,而正确的方法只是让你少走弯路,防止南辕北辙。
在这篇文章中,小编要讲的是学习的步骤,有了一个正确的步骤,才能事半功倍。我们先了解什么是Java编程,它是干什么的,有什么用?
简单来说,Java是一种计算机语言,程序设计语言,可以用来设计软件和网页。了解Java后再自我思考一下,你对Java到底有没有兴趣,没有兴趣你会很累而且效果也不好。对编程感兴趣是成为一个程序员最基本的条件吧!
如果你已经大致知道Java是干什么的而且也确定有兴趣的话,就可以开始Java的正式学习。
Java的学习步骤可以分为2大部分:
一、JavaSE
你也不用去百度什么是Javase,就这么说吧,Javase就是基础中的基础!其中主要有二进制、排序、循环语句、数组、面向对象、接口继承与多态、集合、IO,多线程等等等等。其中有几个比较重要:面向对象,这个是重中之重,是Java最大的特点,集合、IO、多线程。学完这些可以做个小项目玩玩,会很有成就感,增加你学习的动力。
二、选JavaEE还是JavaME
学完基础后又会有一种选择,就是选JavaEE还是JavaME。你也不用百度什么是ee,什么是me,我简单说一下,ee就是web方向,就是网页,me就是嵌入式,还有什么安卓啊,ios啊!
这里主要说的是ee的,比较主流。
(1)JSP/Servlet(很关键)
(2)熟悉http协议
(3)数据库学习:主流有(MySQL、oracle等)
(4)MVC三层架构(做个小项目)
(5)前面都学得不错的话,接下来就要学习框架
主流框架:Struts2、
spring,hibernat(ssh),springmvc,mybatis,jquery等(都要学)
(6)熟悉Linux系统
Java数组101
(译注:101指介绍某件事,读者不需要任何预备知识)
1
---数组在Java中是一个对象,数组实例同样是使用new操作符创建的。Array.length指定了数组长度,例如:
int[] intArray = new int[10];
System.out.println(intArray.length)
Output: 10
Array.length 表示数组的容量,只要数组创建了,每一个索引被初始化为默认值。
2
---数组索引起始为0,负数索引在Java中是无效的,会抛出ArrayIndexOutOfBoundException ,如果你尝试用无效的索引访问数组,这个无效的索引可能是一个负索引,或者是大于等于数组长度的索引。
3
---数组存储在Java堆的连续内存空间,所以如果你创建一个大的索引,你可以有足够的堆空间直到抛出OutofmemoryError,因为请求的内存大小在连续的内存空间不可用。
4
---数组一个固定长度 的数据结构,一旦声明,你不能改变数组的长度。
5
---不同类型的数组有不同的类型,例如下面例子,intArray.getClass不同于floatArray.getClass
int[] intArray = new int[10];
float[] floatArray = new float[10];
6
---你不能存储double值在int数组中,否则导致编译错误。
int[] intArray = new int[10];
intArray[5]=1.2; //compilation error
如果尝试在运行时做这个操作,那么Java抛出ArrayStoreException
7
---在Java数组中可以有不同方式的创建方式,这里就是创建数组的例子:
int[] intArray; //creating array without initializing or specifying size
int intArray1[]; //another int[] reference variable can hold reference of an integer array
int[] intArray2 = new int[10]; //creating array by specifying size
int[] intArray3 = new int[]{1,2,3,4}; //creating and initializing array in same line.
你既可以选择在创建数组的时候初始化数组,也可以以后通过for循环初始化,中括号既可以在变量的前面也可以在变量后面。
第一种方法是方便的创建多个数组如:
int[] array1, array2
这里的array1和array2是整型数组,而第二种方法你需要放两次括号如:
int array1[], array2[]
尽管在风格上没有很多不同,我读“int[] ”叫int数组,这种写法更容易被理解。
8
---如果没有明确的初始化数组元素,那么数组就会用默认的类型值初始化,例如假若没有初始化整型数组,元素都将默认值为0,没有初始化的boolean值是false,对象数组是null。
9
---你可以通过使用[]操作符访问数组元素,因为数组索引起始于0,[0]返回第一个元素,[length-1]返回最后一个元素,for循环是一种迭代整个数组便捷方法。你可以使用for循环初始化整个数组、访问的每个索引或更新、获取数组元素。Java5同样提供了加强的for循环,数组自己管理索引,防止ArrayIndexOutOfBoundException,这里是一个迭代的例子:
传统的方式:
int[] numbers = new int[]{10, 20, 30, 40, 50};
for (int i = 0; i < numbers.length; i++) {
System.out.println("element at index " + i + ": " + numbers[i]);
}
Output:
element at index 0: 10
element at index 1: 20
element at index 2: 30
element at index 3: 40
element at index 4: 50
加强的for循环
for(int i: numbers){
System.out.println(i);
}
Output:
10
20
30
40
50
正如你看到的,加强的for循环不需要检查数组索引,如果你想逐个地访问所有的元素这是一种很好的方法,但是同时因为你不能访问索引,你就不能修改数组元素。
10
---Java中数组可以轻易的转换成ArrayList。ArrayList一个基于索引的集合,它是作为数组的备选方案。ArrayList的优点是可以改变容量大小,只需要创建个更大的数组然后拷贝内容到新数组,但你不能改变数组的大小。
11
---Java API同样提供了一些便捷方法通过java.utils.Arrays类去操作数组,通过使用Arrays你可以排序数组,你可以做二分搜索。
12
---java.lang.System类提供了实用方法拷贝元素到另一个数组。在拷贝内容从一个数组到另一个数组的时候System.arrayCopy非常强大和灵活。你可以拷贝整个或子数组,具体看你的需求。
System.arraycoy语法:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
如你所见,arraycopy允许我们指定索引和长度,能很灵活给你拷贝子数组和存储到需要的位置或目标数组。这里是一个例子,拷贝前三个元素到目标数组:
public static void main(String args[]) {
int[] source = new int[]{10, 20, 30, 40, 50};
int[] target = new int[5];
System.out.println("Before copying");
for(int i: target){
System.out.println(i);
}
System.arraycopy(source, 0, target, 0, 3);
System.out.println("after copying");
for(int i: target){
System.out.println(i);
}
}
Output:
Before copying
0
0
0
0
0
after copying
10
20
30
0
0
你可以看到拷贝之前所有元素是0,之后前三个元素被替换了。
99
Java编程到底怎么学?
枯藤老树昏鸦
空调可乐西瓜
泡在泳池避暑
夕阳西下
回家去学Java
Java编程到底怎么学呢?现在工作越来越难找,而Java程序员好像是公认的高薪职业,于是越来越多的人都开始学习Java,年纪大的有40多的,小的只有10几岁,都拼命往这个方向靠,有的报了培训班,有的自学,没有说哪一种方法是最好的,只有正确的方法,而正确的方法只是让你少走弯路,防止南辕北辙。
在这篇文章中,小编要讲的是学习的步骤,有了一个正确的步骤,才能事半功倍。我们先了解什么是Java编程,它是干什么的,有什么用?
简单来说,Java是一种计算机语言,程序设计语言,可以用来设计软件和网页。了解Java后再自我思考一下,你对Java到底有没有兴趣,没有兴趣你会很累而且效果也不好。对编程感兴趣是成为一个程序员最基本的条件吧!
如果你已经大致知道Java是干什么的而且也确定有兴趣的话,就可以开始Java的正式学习。
Java的学习步骤可以分为2大部分:
一、JavaSE
你也不用去百度什么是Javase,就这么说吧,Javase就是基础中的基础!其中主要有二进制、排序、循环语句、数组、面向对象、接口继承与多态、集合、IO,多线程等等等等。其中有几个比较重要:面向对象,这个是重中之重,是Java最大的特点,集合、IO、多线程。学完这些可以做个小项目玩玩,会很有成就感,增加你学习的动力。
二、选JavaEE还是JavaME
学完基础后又会有一种选择,就是选JavaEE还是JavaME。你也不用百度什么是ee,什么是me,我简单说一下,ee就是web方向,就是网页,me就是嵌入式,还有什么安卓啊,ios啊!
这里主要说的是ee的,比较主流。
(1)JSP/Servlet(很关键)
(2)熟悉http协议
(3)数据库学习:主流有(MySQL、oracle等)
(4)MVC三层架构(做个小项目)
(5)前面都学得不错的话,接下来就要学习框架
主流框架:Struts2、
spring,hibernat(ssh),springmvc,mybatis,jquery等(都要学)
(6)熟悉Linux系统
(7)做项目会议+巩固
宁波双眼皮整形http://www.lyxcl.org/syp/