- 浏览: 72547 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
须等待:
强烈同意。。。。这个编辑器简直太不好用了!
对于在Ubuntu下的Eclipse上安装SVN客户端插件Subclipse的补充 -
nudtgk2000:
flysnail 写道 思路挺好,
谢谢鼓励,还是初学者,不 ...
重写CountDownLatch以实现线程状态监视 -
flysnail:
思路挺好,:)
重写CountDownLatch以实现线程状态监视
数组
- 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。
- 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
差别:C/C++中的数组是可以分配在栈上的
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
一维数组的声明
格式:type var[]; 或 type[] var;
- Note:Java语言中声明数组时不能指定其长度(而在创建时,比较C/C++);
数组对象的创建
格式: 数组名 = new 数组元素类型[元素个数]
public class Test { public static void main(String args[]) { int[] s; // 在栈内存中声明数组引用 s = new int[5]; // 在堆内存中创建数组,并对基本类型的元素初始化{0, 0, 0, 0, 0}, s引用指向它 } }
元素为引用数据类型的数组
Note:每一个元素(引用数据类型)都需要初始化。
public class Test { public static void main(String[] args) { Date[] days; days = new Date[3]; for (int i=0; i<3; i++) { days[i] = new Date(2004, 4, i+1); } } } class Date { int year; int month; int day; Date(int y, int m, int d) { year =y; month =m; day = d; } }
数组初始化
- 动态初始化 —— 数组定义与为数组元素分配空间和赋值的操作分开进行
int[] a; a = new int[3]; a[0] = 3; a[1] = 9; a[2] = 8; Date[] days; days = new Date[3]; day[0] = new Date(1, 4, 2004); day[1] = new Date(2, 4, 2004); day[2] = new Date(3, 4, 2004);
- 静态初始化 —— 在定义数组的同时就为数组元素分配空间并赋值
int[] a = {3, 9, 8}; Date[] days = { new Date(1, 4, 2004); new Date(2, 4, 2004); new Date(3, 4, 2004); };
- 数组元素的默认初始化
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被默认初始化
... ... int[] a = new int[5]; Date[] days = new Date[3]; System.out.println(a[3]); System.out.println(days[3]); ... ... /* Output: 0 null */
数组元素的引用
arrayName[index]
Note: 在用到数组长度的地方都用arrayName.length属性而非长度值;
tips:
- public satic void System.exit(int static) —— 当前运行的虚拟机退出,0正常退出,非0非正常退出(其实两者在Windows下没区别)更多详情见API。
- 基础类型包装类 —— 把基础类型的值包装进对象,有Byte,Short,Integer,Long,Double,Float,Character,Boolean。除了Character类外它们都有把String形式的值转换成基础类型的静态方法,如public static int Integer.parseInt(String value) throws NumberFormatException, 更多详情见API。
- 对每次循环都要用到的变量,把定义放在循环外,循环内赋值,节省每次分配/回收内存操作的花销。
二维数组
- 可以视为数组的数组。 如: int a[][] = {{1, 2}, {3, 4, 5, 6}, {7, 8, 9}};
- 多维数组的声明及初始化应从高维到低维从左到右从外到里
// 静态初始化 int intA[][] = {{1, 2}, {2, 3}, {3, 4, 5}}; // int intB[3][2] = {{1, 2}, {2, 3}, {4, 5}}; 非法 // 动态初始化 int a[][] = new int[3][5]; int b[][] = new int[3][]; // int t[][] = new int[][4]; 非法 b[0] = new int[2]; b[1] = new int[3]; b[2] = new int[5];
数组的拷贝
- 使用java.lang.System类的静态方法System.arraycopy
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Note: 这个函数名里c居然没有大写
将源数组src从第srcPos项元素开始的length项元素拷贝到目标数组dest从destPos项开始的length个位置;
若length超过目标数组边界会抛出 IndexOutOfBoundsException 异常。
更多见API。
String[] s = ("Microsoft", "IBM", "Sun", "Oracle", "Apple"); String[] sBak = new String[6]; System.arraycopy(s, 0, sBak, 0, s.length); for(int i=0; i < sBak.length; i++) { System.out.println(sBak[i]); // sBak[i]和s[i]的值相同,是字符串常量的引用 } // 二维整型数组拷贝 int[][] a = {{1, 2}, {1, 2, 3}, {3, 4}}; int[][] aBak = new int[3][]; System.arraycopy(a, 0, aBak, 0, a.length); a[2][1] = 100; for(int i=0; i<aBak.length; i++) { for(int j=0; j<aBak[i].length; j++) { System.out.println(aBak[i][j]); // 因为aBak[2]拷贝了a[2]的数组引用,所以aBak[2][1]和a[2][1]是同一个变量,已经改成了100 } }
- 整型数组选择排序.zip (561 Bytes)
- 下载次数: 3
- 分别用数组和链表模拟数三退一.zip (1 KB)
- 下载次数: 3
- 对象类型数组冒泡排序和二分查找.zip (1 KB)
- 下载次数: 4
发表评论
-
Weka 3.6.9 加载libsvm类包的正解
2014-05-24 10:59 5922Weka 3.6.9本身不带libsvm的类包,百度网上铺天 ... -
【转】常用的系统属性
2012-11-21 17:02 777获取类文件所在的绝对路径 写道 "Jav ... -
用Log4j实现线程独立日志
2012-11-04 22:53 8180需求: 在一个项目里,我使用Log4j生成日志, ... -
重写CountDownLatch以实现线程状态监视
2012-11-04 20:25 1505需求:管理线程需要及时知道工作线程全部处于等待状态,并满足等待 ... -
byte型检查
2012-09-09 21:14 799byte b; //... ... // 范围检查,确保只 ... -
【转】Dom4j的使用(全而好的文章)
2012-08-07 15:09 939java解析xml汇总, 结论就是Dom4j比其他几种好 ... -
【转】正则表达式的一些资料
2012-08-07 15:07 846JAVA 正则表达式 (超详细)http://blog.csd ... -
【转摘】Exception in thread "main" java.lang.OutOfMemoryError: Java heap space解决方法
2012-08-04 18:02 14916摘自http://hi.baidu.com/61919 ... -
【转】java解析xml汇总
2012-07-31 20:53 16java解析xml汇总 -
java.io.InputStream.mark(int readlimit) 方法的个人理解
2012-05-16 16:04 0在马士兵java课程的IO这一章[1]中遇到 java.io ... -
马士兵课程笔记(续7) —— 流
2012-03-20 18:51 0Java 流式输入/输出原理 ... -
马士兵课程笔记(续6)
2012-03-18 18:31 1241容器 概念 Java API 所提供的用于在程序中 ... -
走了一段值得的弯路
2012-03-16 21:27 1045class C { int i; S ... -
马士兵课程笔记(续5)
2012-03-09 19:28 1440常用类 字符串相关类(String, StringBuff ... -
马士兵课程笔记(续3)
2012-02-22 16:47 1489抽象类 关键字abstract 含有抽象方法的类必须声明 ... -
马士兵课程笔记(续2)
2012-01-03 15:50 1128J2SDK中主要的包介绍 位置%JAVAHOME%\jr ... -
马士兵课程笔记
2011-11-14 07:47 1259J2EE框架 EJB (Enterprise Ja ... -
Porter Stemmer 波特词干算法
2011-10-26 08:17 6760/* Porter ... -
Linux命令收集罐
2011-10-23 16:54 916查看系统进程——ps 要对 ... -
JAVA中 @Override 的作用(转)
2011-10-22 22:44 2562<!-- @pa ...
相关推荐
【标题】"马士兵课程笔记(续5)"主要聚焦在编程和软件开发的某一特定领域,结合了“源码”和“工具”的概念。这可能是关于解析、分析或利用源代码,以及使用特定工具来提升开发效率或理解复杂系统的主题。马士兵是一...
### 马士兵JVM调优笔记知识点梳理 #### 一、Java内存结构 Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及...
马士兵JAVA笔记(全) 本资源是马士兵的JAVA笔记,涵盖了JAVA语言的基础知识,包括标识符、常量、变量、数据类型、运算符、控制流语句等。 标识符是JAVA中的一种符号,用于命名变量、方法、类等。标识符由字母、...
马士兵oracle笔记,浅显易懂。
jvm java虚拟机 调优 马士兵 笔记 让你对java虚拟机调优有初步的认识
Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc
马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...
马士兵老师的MyBatis学习笔记主要涵盖了以下几个核心知识点: 1. **MyBatis安装与环境搭建**:首先,你需要配置Java开发环境,并了解Maven或Gradle构建工具,因为MyBatis通常与这些工具结合使用来管理依赖。然后,...
马士兵Spring课堂笔记(超级详细版) 本资源主要讲解了Spring框架的基础概念和应用,涵盖了面向接口编程、IOC/DI、AOP、Spring应用IOC/DI、Spring应用AOP、Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合、Spring...
马士兵Spring课堂笔记(详细版) 马士兵spring视频笔记
JAVA就业班笔记【马士兵说】.nyf
"JAVA笔记(根据马士兵的java视频整理)" 本资源是根据马士兵的JAVA视频整理的笔记,涵盖了JAVA的基础知识、数据结构、面向对象编程、Java Web编程、J2EE、J2ME等方面的知识点。 在基础知识方面,本资源涵盖了变量...
《马士兵Hibernate学习笔记》是一份详尽的教程,涵盖了Hibernate框架的核心概念和技术要点。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,它有效地解决了Java应用程序与数据库之间的数据交互问题,...
以下是对马士兵多线程笔记的详细解析。 1. **多线程基础**:多线程是指一个应用程序中同时执行多个线程(即任务)的能力。这种并发执行可以提高系统资源的利用率,提升程序的响应速度和执行效率,特别是在多核...
### Java SE - 马士兵笔记精要 #### 第1章 Java概述 - **Java语言的特点**: - **面向对象**:Java是一种完全支持面向对象编程的语言。 - **平台无关性**:通过Java虚拟机(JVM),Java可以在任何安装了JVM的...
马士兵Springboot课堂笔记