java基础入门-arraylist存储开销】的更多相关文章

今天我们来看一下arraylist的存储开销,由于在项目其中,我尝试了一个很大的arraylist.然后内存爆了 所以我看了下源代码.原来arraylist的存储开销是比較大的,先上代码 import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add(&…
原创文章,转载请标注出处:<Java基础系列-ArrayList> 一.概述 ArrayList底层使用的是数组.是List的可变数组实现,这里的可变是针对List而言,而不是底层数组. 数组有自身的特点,不变性,一旦数组被初始化,那么其长度就固定了,不可被改变.这就导致了ArrayList中的一个重要特性:扩容. 二.源码解析 2.1 声明 public class ArrayList<E> extends AbstractList<E> implements Lis…
整体大纲图 1.认识java 核心知识点:JVM.搭建Java开发环境.java的发展史.java特点.java程序类型.垃圾收集器.J2SE下载和安装.环境变量的配置和测试.以及简单的开发工具的使用等等:主要了解java的发展史.特点.JDK.JRE.java技术体系.以及工具的安装与简单使用: 1.1.初步了解计算机 1.1.1 硬件与软件的区别? 硬件 1.cpu是一台计算机的运算核心和控制核心.其功能主要是解释计算机指令以及处理计算机软件中的数据.CPU由运算器.控制器.寄存器.高速缓存…
需求:ArrayList存储自定义对象并遍历.要求加入泛型,并用增强for遍历. A:迭代器 B:普通for     C:增强for LinkedList,Vector,Colleciton,List等存储继续练习 增强for是用来替迭代器. package cn_JDK5new; import java.util.ArrayList; import java.util.Iterator; public class ArrListDemo2 { public static void main(S…
Java编程入门知识   知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java的入门知识: 基础常识 软件开发,     人机交互方式,   常用的DOS命令 如见开发的概念 软件:一系列按照特定顺序的组织的计算机数据和指令的集合. 常见的软件:  QQ MSN  飞信  微信  支付宝.. 系统软件: 应用软件 什么是开发?软件开发就可以简单的理解为制作软件. 知识扩延:人…
因为平时用到一些java的项目,比如ElasticSearch,zookeeper等,有时也想看看里面怎么实现的,或者看到别人分析原理时候会用到java源码, 自己也想跟着学一下,最起码能看懂别人的分析,所以就学习一下java的基础知识.有一定其他语言基础,java基础概念学起来也比较顺利. 这里记录下,以后自己忘了可以再复习. 一:下载jdk https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133…
面向对象程序设计(Java基础) 1.项目介绍: 该项目能够实现对电话薄的添加,查找,修改,删除,排序等基本操作. 用户进入系统中首先进入主菜单中,在主菜单中可以选择相应的操作,用户可以选择每项操作前的序号即可进入到相应操作的子菜单,在子菜单中也可以选择相应的操作. 2.项目设计规划 该项目的实现主要依靠五个类来实现: 1.App对应Application(程序入口方法)主类,创建Menu类的对象,并调用Menu类的方法: 2.Menu对应Menu(菜单类):定义多个方法,显示各种操作对应的菜单…
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:    a.动态的增加和减少元素    b.实现了ICollection和IList接口    c.灵活的设置数组的大小 2.如何使用ArrayList 最简单的例子: ArrayList List = new ArrayList(); for( int i=0;i <10;i++ ) //给数组增加10个Int元素 List.Add(i); //..程序做一…
Java入门基础 1.IDE->Eclipse 新建程序步骤 1.创建一个Java项目 2.创建一个包(package) 也就相当于C#中的命名空间C++中的头文件 3.创建一个类 这样就完成了类的创建 2.和c#的不同之处 1.方法默认都是虚方法 2.默认的访问修饰符是没有的 3.密封不是seal而是final(表示不可修改的) 4.判断是否实现不是is而是instanceof 5.接口中可以有属性 6.抽象类可以用来当作匿名类实现并调用它的方法, 7.可变长度所用指令...…
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8494618.html 一.概述 ArrayList是Java集合体系中最常使用,也是最简单的集合类,是以数组实现的线性表. 数组在内存中是以一段连续的内存来进行存放的,同样,ArrayList也是如此,初始化时可以指定初始容量,也可以以默认容量(10)创建底层数组,由于ArrayList属于可变长列表,采用可变数组实现,数组本身是不变的,一旦定义就无法变长,可变数组使用创建新数组拷贝旧数…
ArrayList是java的动态数组,底层是基于数组实现. 1. 成员变量 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { /** * The maximum size of array to allocate. * Some VMs reserve some header word…
一.ArrayList ArrayList继承了AbstractList分别实现了List.RandomAccess(随机访问).Cloneable(可被克隆(复制的意思)). Serializable(可序列化) public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable 1.1.RandomAcc…
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class demo1 { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TO…
面向对象(2) this:代表对象.代表哪个对象呢?当前对象. 当成员变量和局部变量重名,可以用关键字this来区分. this就是所在函数所属对象的引用.(简单说:哪个对象调用了this所在的函数,this就代表哪个对象.) this也可以用于在构造函数中调用其他构造函数.注意:只能定义在构造函数的第一行.因为初始化动作要先执行. 例如:person(String name){this.name = name;} person(String name,int age){this(name);t…
1.数组 概念:同一种类型数据的集合.其实就是数组就是一个容器. 好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式: ①. 元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; 例:int[] arr = new int[5]; ②.元素类型[] 数组名 = new 元素类型[]{元素,元素,....};  例:int[] arr = new int[]{3,5,1,7}; 或者 int[] arr = {3,5,1,7}; 常见异常: ①.ArrayIndexO…
1.java语言的三种技术架构: J2SE(java 2 Platform Standard Edition):标准版,是为开发普通桌面和商务应用程序提供的解决方案.该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发,Java 5.0 版本后更名为JavaSE. J2EE(java 2 Platform Enterprise Edition):企业版,是为开发企业环境下的应用程序提供的一套解决方案,该技术体系中包含的技术如 Servlet Jsp等,主要针对于Web 应用开发,Java…
ArrayList 以数组实现.节约空间,但数组有容量限制.超出限制时会增加50%容量,用System.arraycopy()复制到新的数组.因此最好能给出数组大小的预估值.默认第一次插入元素时创建大小为10的数组.按数组下标访问元素-get(i).set(i,e)的性能很高,这是数组的基本优势.如果按下标插入元素.删除元素-add(i,e).remove(i).remove(e),则要用System.arraycopy()来复制移动部分受影响的元素,性能就变差了.越是前面的元素,修改时要移动的…
JDK的安装和环境变量的配置: 在Oralce官网下载好符合自己电脑配置的JDK后开始配置环境变量. 找到下载好的JDK的位置,复制,然后在环境变量里创建“JAVA_HOME”,粘贴:在path里用“%JAVA_HOME%\bin;”来引用. 配置好后,在cmd里分别运行java.javac.java-version,来查看是否配置成功. 在CMD里运行的一些快捷键: cd .. 回退一层目录 cd 目录 表示:切换到指定目录 dir /b 查看当前目录下的文件或文件夹 javac编译命令 ja…
ArrayList集合 ArrayList的一些方法(JDK1.8): 将指定的元素附加到列表的末尾,true:添加成功,false:添加失败: public boolean add(E e)    在指定的位置插入指定的元素列表. 改变当前位置的元素(如果有的话)右边的所有元素往后移一位(增加一个到它们的索引) public void add(int index, E element)    按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾 public bool…
学java之前先了解下window系统的的一些常识: #常用windows快捷键 ctrl+x:剪切 ctrl+z:撤销 ctrl+A:全选 ctrl+V:黏贴 windows+d:回到桌面 Windows+L:锁屏 windows+f:打开搜索界面 Alt+tab:程序切换 windows+E:打开我的电脑 shift+鼠标右键:在此处打开命令窗口 cd..代表回到上一级路径 cd\:返回根路经 //打开命令窗口的方式: 1.window+R快捷键,然后输入cmd命令按回车,就可以打开一个黑色…
今天在写代码的时候,index定义的时候用了Integer,在list.remove(index)的时候,总是不成功,后来发现如果用Integer定义的时候,index不再是基础数据类型,被识别为remover(Object o),导致不成功,特此记录.…
官网:https://www.oracle.com Java分为三个体系: JavaEE: Java Platform, Enterprise Edition, Java平台企业版 JavaSE: Java Platform Standard Edition, Java平台标准版 JavaME: Java Platform Micro Edition, Java平台微型版 Java特性: 可移植:不同系统有不同的解释器JVM Java运行及开发环境: JRE(Java Runtime Envio…
类似C/C++,Java也支持单行和多行注释 注释中的字符在编译时会被忽略 注释通常为类.变量和方法的主要描述 单行注释 // 注释内容 多行注释 /* 注释内容 */ /* * 注释内容 */ 文档注释 /** * 注释内容 */ 文档注释可使用javadoc工具来生成信息,并输出到HTML文件中,方便记录程序信息 文档注释中可包含一个或多个@标签,每个@标签都在新的一行开始 多个相同的标签应一个接一个的放在一起组成一组 实例:SquareNum.java import java.io.*;…
类别 关键字 说明 访问控制 private 私有的 protected 受保护的 public 公共的 类.方法和变量修饰符 abstract 声明抽象 class 类 extends 扩充,继承 final 最终值,不可改变的 implements 实现(接口) interface 接口 native 本地,原生方法(非Java实现) new 新,创建 static 静态 strictfp 严格,精准 synchronized 线程,同步 transient 短暂 volatile 易失 程…
JDK安装完成后,将一下代码写入文件HelloWorld.java中 // HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world"); } } 注:.java文件名与class名字必须一致 编译: $ javac <file name>.java $ javac HelloWorld.java 编译器…
/* 自学java 九九乘法表 Power by Stuart Date: 2015.4.23 */public class Math { public static void main (String args[]){ for(int i=1;i<10;i++){ for(int j=1;j<=i;j++) { System.out.println(i+"*"+j+"="+i*j); } System.out.println(); } } }…
承接上一篇文章,今天谈论一下能够多client链接的ServerSocket. 这里面注意涉及到的技术点是: 1.ServerSocket 2.多线程 这次我们分成两个类来实现,先上代码: package com.test.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.S…
1.面向对象的特征二:继承 定义: 指一个对象直接使用另一对象的属性和方法. 继承好处: 1.提供代码的复用性. 2.让类与类直接产生了关系,给第三个特征多态提供了前提. java中支持单继承.不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有一个父类. 多继承:一个子类可以有多个直接父类(java中不允许,进行改良,不直接支持,因为多个父类中有相同的成员,会产生调用不确定性,在java中是通过“多实现”的方法来体现的. java支持多层(多重)继承.(例如C继承B,B…
上节中写了一些static变量以及静态的方法的定义使用以及与非静态的差别,这节补充下: 如果在一个类中所有方法都为静态的,且无成员变量,这时候需要对对应的类进行限制该类无法创建对象,具体操作如下: private ArrayTool(){} //该类中的方法都是静态的,所以该类是不需要的创建对象的.为了保证不让其他成创建该类对象,可以将该类的构造函数私有化. 1.文档注释 利用java虚假机中的javadoc工具进行文档注释生成,利用代码中的文档注释进行生成. 注意: 1.每个编译单元(类文件)…
面向对象 面向过程:对于面向过程思想,强调的是过程(动作). 面向对象:对于面向对象思想,强调的是对象(实体). 特点: 1,面向对象就是一种常见的思想.符合人们的思考习惯.2,面向对象的出现,将复杂的问题简单化.3,面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者. 类与对象: java语言对现实生活中的事物进行描述,通过类的形式来体现的. 对于事物描述通常只关注两方面:一个是属性,一个是行为. 只要明确该事物的属性和行为并定义在类中即可. 类:事物的描述.对象:该类事物的实例.在…