跟着刚哥梳理java知识点——数组(七)
数组:数组是多个相同类型数据类型的集合,实现对这些数据的统一管理。
元素:数组中的元素可以是任何数据类型,包括基本数据类型和引用类型。
特点:属于引用类型,数组型数据是对象object,数组中的每个元素相当于对象的成员变量。
数组定义:
1、静态初始化声明数组:
① String[] names = new String[]{"gangge","pijiu","paopao"}; ② String[] names = {"gangge","pijiu","paopao"};
注意第②种写法不能写成String[] names; names = {""gangge","pijiu","paopao"};
2、动态初始化声明数组:
String[] names = new String[4];
数组调用:通过数组元素的下角标的方式来调用,从0开始。例如:names[0]
数组长度:通过length属性,length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。
数组遍历:for循环或者for增强
① for(int i=0;i<names.length;i++)
② for(String n:names)
数组默认值:创建数组以后,不显式的赋值会有自己的默认值
1、基本数据类型
① 对于4个整形byte、short、int、long:默认值是0
② 对于2个浮点型float、double:默认值是0.0
③ 对于char类型:默认值是空格
④ 对于boolean类型:默认值是false
2、引用类型,默认类型是null
数组的Equals:
数组的比较可以使用equals吗?
public static void main(String[] args)
{
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a.equals(b));
}
输出结果:false
为什么呢?因为数组的equals方法没有重写object对象的equals方法,那怎么办呢?一个解决方案是自己写方法,另一种方法是使用数组的工具辅助类java.util.Arrays。
java.util.Arrays常用方法:
① boolean equals(array1,array2):比较两个数组是否相等。
② void sort(array):对数组进行升序排序(使用快速排序)。
③ String toString(array):将数组转换成一个指定格式的字符串。(格式:[元素1,元素2,元素3])
④ void fill(array,val):把数组的所有元素赋值成val。
⑤ int binarySearch(array,val):查询元素val在数组array中下标。
数组的内存结构:
栈:存放局部变量,对象的引用。栈的特点先进后出的,所以第一个进去的会被压到最下面。
堆:new出来的东西都放在堆空间,堆的特点是先进先出的。
看第一个数组如何在内存中声明的:
int[] scores = new int[4];
scores[0] = 89;
scores[1] = 90;
① 在栈中声明了一个变量scores。
② 在堆中开辟一个4个连续int类型的空间并且给所有的空间附上默认值0。
③ 把栈中scores变量指向堆中刚刚开辟的4个连续int类型的空间首地址(是一个16位进制数字)。
④ scores[0] = 89;按照索引找到第一个元素,将其值修改成89。
⑤ scores[3] = 90;按照索引找到第四个元素,将其值修改成90。
看一个题目:
// 静态初始化数组
String[] names = { "Michael", "Orson", "Andrew" };
// 动态初始化数组
String[] animal = new String[4];
// 让animal 指向 namens 数组所引用的数组
names = animal; System.out.println(names.length);
System.out.println(animal.length);
输出结果:4 4
跟着刚哥梳理java知识点——数组(七)的更多相关文章
- 跟着刚哥梳理java知识点——面向对象(八)
面向对象的核心概念:类和对象. 类:对一类事物描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也成为实例(Instance). Java类及类的成员:属性(成员变量Field) ...
- 跟着刚哥梳理java知识点——深入理解String类(九)
一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...
- 跟着刚哥梳理java知识点——HelloWorld和常见问题(一)
1.按照国际惯例,写一段输出HelloWorld的java语句: public class HelloWorld { //这是main方法,程序的主入口 public static void main ...
- 跟着刚哥梳理java知识点——多线程(十六)
创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 cla ...
- 跟着刚哥梳理java知识点——IO(十五)
凡是与输入.输出相关的类.接口都定义在java.io包下 java.io.File类 1.File是一个类,可以有构造器创建其对象.此对象对应着一个文件或者一个目录. 2.File中的类,仅涉及到如何 ...
- 跟着刚哥梳理java知识点——枚举和注解(十四)
enum Season{ SPRING("spring","春暖花开"), SUMMER("summer","夏日炎炎" ...
- 跟着刚哥梳理java知识点——集合(十二)
Java集合分为Collection和Map两种体系 一.Collection接口: Collections接口为我们提供了以下方法: size():返回集合中元素的个数 add(Object obj ...
- 跟着刚哥梳理java知识点——变量之间的类型转换(四)
变量之间的类型转换主要包括自动类型转换和强制类型转换. 1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动的转换成容量大的类型. [知识点]: a)char,byte,sh ...
- 跟着刚哥梳理java知识点——注释(二)
1.单行注释 // //这是main方法,程序的入口 public static void main(String[] args) { //输出语句 System.out.println(" ...
随机推荐
- 使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题
一.问题分析 对于后台系统,相比大家都有所印象,知道其中的布局结构,如图: 在这种布局中我们需要将header,sidebar,footer分开,而且对于中间部分的content内容需要动态变化,即根 ...
- 结合prototype和xmlhttprequest封装ajax请求
由于拖延症的严重以及年前准备年会(借口*^__^*) 导致这个小的的思考 现在才算完成 再怎么说也算是上班以来带我的前辈第一次这么正式的给我出题 不管是出于尊重还是自我要求我都决定把它简要的记下来 ...
- 提交Sublime Text 插件到Package Control
最近写了一个lua智能提示的插件LuaSmartTips.这个插件一直都是自己一个人在用,昨天突然想把插件提交到Package Control,如果其他的人有这样的需求就可以直接安装. Package ...
- 1000: A+B Problem(NetWork Flow)
1000: A+B Problem Time Limit: 1 Sec Memory Limit: 5 MBSubmit: 11814 Solved: 7318[Submit][Status][D ...
- 一种抛弃GPS的中近距离高精度无线同步新方案
目前,对于需要做同步数据采集的项目,大家不约而同的选用GPS作同步源,用GPS的秒脉冲作同步基准.对于是1000米内的多采集点的应用来说,这是一种浪费. 目前福州慧聚通信技术有限公司推出一款无线同步数 ...
- CSS3 transition 浏览器兼容性
1.兼容性 根据canius(http://caniuse.com/#search=transition),transition 兼容性如下图所示: <!DOCTYPE html> < ...
- 常见端口、端口查询及TCP状态
查看电脑端口的开放情况命令:cmd——netstat -a -n -a:显示所有连接和监听端口:-n:以数字形式显示地址和端口号 “本地地址”指本地IP地址及其正在使用的端口号,“外部地址”指连接某端 ...
- JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘
一.属性的归属问题 JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响.对于所有实例共用的方法可直接定义在原型链上这样实 ...
- 我的java学习笔记
最近一直在自学C#和js,想着想把以前学的java学习笔记整理下发上来.
- 读书笔记 effective c++ Item 36 永远不要重新定义继承而来的非虚函数
1. 为什么不要重新定义继承而来的非虚函数——实际论证 假设我告诉你一个类D public继承类B,在类B中定义了一个public成员函数mf.Mf的参数和返回类型并不重要,所以假设它们都是void. ...