疯狂JAVA——数组】的更多相关文章

java是静态语言,java数组也是静态语言 静态初始化: String[] a = new String[]{ "我"}; String[] b = { "你" } 动态初始化: String[] c = new String[2]; 数组长度始终不会改变.当执行一下代码: a=c; b=c; 此时,数组a和b的数组长度为2.这是一个误解,数组a和b所指向的数组对象改变为c所指向的数组对象,数组a和b原来所指向的数组对象长度并没有改变. 数组并不一定要初始化,可以…
很早以前就听过李刚老师的疯狂java系列很不错,所以最近找一本拿来拜读,再此做下读书笔记,促进更好的消化. 使用Java数组之前必须先对数组对象进行初始化.当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组初始化完成.程序以后将不能重新改变数组对象在内存中的位置和大小. 从用法角度来看,数组元素相当于普通变量,程序既可把数组元素的值赋给普通变量,也可把普通变量的值赋给数组元素. 1.1数组初始化 1.1.1 Java数组是静态的 Java语言是典型的静态语言,因此Java的数组是静…
package test;   /** * Desription: * @author orangebook *<br/>网站:<a href="http://www.crazyit.org">疯狂Java联盟</a> *<br/> */   public class javadocTest {     /**      * 简单的测试Field      */     protected String name;     public…
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同.相当于存取款交替进行,金额相同. 线程间通信,需要通过同一个同步监视器(也就是this或者显式的Object对象)调用通信方法, Object有三个方法,可以用于线程间通信 wait() 当前线程等待,并释放同步锁 wait():无限期等待 wait(long timeout):等待timeout…
第四章: 4.6深入数组 1.栈内存和堆内存 每个方法都会建立自己的内存栈,在这个方法内定义的变量会逐个放入栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁.因此,所有在方法中定义的局部变量都是放在栈内存中的,在程序中创建一个对象,这个对象将被保存到运行时数据区中,以便反复利用,这个运行时数据区就是堆内存. 定义并初始化一个数组后,在内存中分配了两个空间,一个用于寻访数组的引用变量,另一个用于存放数组本身. 第五章 面向对象(上) 1.static 修饰的方法属于类, 2. 第六章 面…
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制自动清理该对象,并回收该对象所占用的内存.由于JVM内置了垃圾回收机制回收失去引用的Java对象所占用的内存,所以很多Java开发者认为Java不存在内存泄漏,资源泄漏的问题.实际上这是一种错觉,Java程序依然会有内存泄漏. 由于JVM的垃圾回收机制由一条后台线程完成,本身也是非常消耗性能的,因此…
1.编译语言和解释语言理解,摘自李刚老师的<疯狂Java讲义>第三版: 就是说,Java和.net都是编译型有事解释型语言.编译型就是根据不同平台编译成不同的可执行机器码,编译过程中会进行很多的优化,比如:字符串自动连接以及各种常量替换和连接多个文件生成一个文件等等,而解释型只需要能被解释器解释就可以了,而不需要编译,比如说:html是解释型语言,不需要经过编译,是什么浏览器就解释什么.其实感觉二进制码也是一种解释型语言,而cpu就充当解释器.java和.net都需要虚拟机(也可以认为是解释器…
1. java数组的静态特性:          java是静态语言,java中数组的长度是固定的.还有,数组元素的类型也是在定义时指定了的. 2. java数组里的关键词:          数组变量 : 引用变量 , 不过这个引用的类型是数组类型.数组类型很奇特,不需要程序员来设计类的属性和方法,只要在已知的引用类型(类,接口,还有数组)后加一个[], JVM就自动生成了这样的新类型.         作为一个变量,它是存在于栈空间中的.不过由于其是一个引用变量,其所指向的内容(保存的值)是…
package org.crazyit.ball; import java.awt.Image; import java.io.File; import javax.imageio.ImageIO; import java.io.IOException; /** * 小球对象 * * @author yangenxiong yangenxiong2009@gmail.com * @author Kelvin Mak kelvin.mak125@gmail.com * @version 1.0 *…
第17章  网络编程 17.4  基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送.接收的数据报. 17.4.1  UDP协议基础 UDP协议是英文User Datagram Protocol的缩写,即用户数据报…
<疯狂java讲义·第三版>,全书共851页,18章. 目录如下: 第1章 Java语言概述与开发环境 第2章 理解面向对象 第3章 数据类型和运算符 第4章 流程控制与数组 第5章 面向对象(上) 第6章 面向对象(下) 第7章 Java基础类库 第8章 Java集合 第9章 泛型 第10章 异常处理 第11章 AWT编程 第12章 Swing编程 第13章 MySQL数据库与JDBC编程 第14章 Annotation(注释) 第15章 输入/输出 第16章 多线程 第17章 网络编程 第…
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.006-[疯狂Java讲义第3版 李刚]- 垃圾回收 Style:EBook Series:Java Since:2017-09-18 End:.... Total Hours:... Degree Of Diffculty:2 Degree Of Mastery:2 Practical Level:2 Desired Goal:2 Archieve Goal:.... Gerneral Evalu…
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.007-[疯狂Java讲义第3版 李刚]-  Java基础类 Style:EBook Series:Java Since:2017-09-19 End:.... Total Hours:... Degree Of Diffculty:2 Degree Of Mastery:2 Practical Level:2 Desired Goal:2 Archieve Goal:.... Gerneral E…
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.008-[疯狂Java讲义第3版 李刚]- 集合 Style:EBook Series:Java Since:2017-09-22 End:.... Total Hours:... Degree Of Diffculty:2 Degree Of Mastery:2 Practical Level:2 Desired Goal:2 Archieve Goal:.... Gerneral Evaluat…
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.009-[疯狂Java讲义第3版 李刚]- 泛型 Style:EBook Series:Java Since:2017-09-22 End:.... Total Hours:... Degree Of Diffculty:2 Degree Of Mastery:2 Practical Level:2 Desired Goal:2 Archieve Goal:.... Gerneral Evaluat…
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.010-[疯狂Java讲义第3版 李刚]- 异常 Style:EBook Series:Java Since:2017-09-29 End:.... Total Hours:... Degree Of Diffculty:2 Degree Of Mastery:2 Practical Level:2 Desired Goal:2 Archieve Goal:.... Gerneral Evaluat…
  java7新加特性: 0B010101  二进制数 int c=0B0111_1111;   数值中使用下划线分隔 switch 支持String类型   字符串常量放在常量池 String s0="hello"; String s1="hello"; String s2="he" + "llo"; System.out.println(s0==s1); System.out.println(s0==s2);   数组:…
1.集合分四类:set,map,list,queue 位于java.util包下. 集合类和数组的区别,数组可以保存基本类型的值或者是对象的引用,而集合里只能保存对象的引用. 集合类主要由两个接口派生而出:Collection和Map collection集合里面一共10个可用的类. 其中, set里面4个: EnumSet, TreeSet, HashSet, LinkedHashSet Queue里面2个: ArrayDeque, PriorityQueue, List里面3个: Array…
<疯狂Java讲义(第4版)>是<疯狂Java讲义>的第4版,第4版保持了前3版系统.全面.讲解浅显.细致的特性,全面新增介绍了Java 9的新特性. <疯狂Java讲义(第4版)>深入介绍了Java编程的相关方面,<疯狂Java讲义(第4版)>内容覆盖了Java的基本语法结构.Java的面向对象特征.Java集合框架体系.Java泛型.异常处理.Java GUI编程.JDBC数据库编程.Java注释.Java的IO流体系.Java多线程编程.Java网络通…
最近在读<疯狂Java讲义>,现把其中遇到的一些自己以前没掌握的点儿记录下来. 1.字符串相关 字符串不是基本类型,字符串是一个类,也就是一个引用类型. 字符串转int类型String a = "45" ;int iValue = Integer.parseInt(a) ; 2.求余运算符 %: 求余运算符. 求余运算的结果并不一定总是整数.如果求余运算符的两个操作数中有一个或者两个都是浮点数,则允许第二个操作数是0或0.0,只是求余运算的结果是非数:NaN. 3.&…
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如numbers[100]来代替直接声明100个独立变量number0,number1,....,number99. 本博文将为大家介绍Java数组的声明.创建和初始化,并给出其对应的代码. 声明数组变量 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法: dataType[] arrayRefVar;…
1.什么是数组 数组可以想象成一个巨大的盒子,这个盒子里面存放的是同一个数据类型的数据 例如:int[] scores = {78,68,94,93}; 2.如何使用Java中的数组 2.1申明数组 使用前先声明,声明方式是:数据类型[] 数组名:或数据类型 数组名[]; 例:int[] scores;等价int scores; 2.2分配空间 第二步需要为数组分配可以用的空间是多少.分配方式是:数组名 = new 数据类型[数组长度] 例:scores = new int[5] 说明:第一步中…
数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int[10]; 数组名,也即引用a,指向数组元素的首地址. 方式2(同C语言) type变量名[] = new type[数组中元素的个数]; 如: int a[] = new int[10]; 方式3 定义时直接初始化 type[] 变量名 = new type[]{逗号分隔的初始化值}; 其中红色部…
几乎所有的程序设计语言都支持数组.Java也不例外.当我们需要多个类型相同的变量的时候,就考虑定义一个数组.在Java中,数组变量是引用类型的变量,同时因为Java是典型的静态语言,因此它的数组也是静态的,所以想要使用就必须先初始化(为数组对象的元素分配空间). 1.数组的初始化方式及其内存分配 对于Java数组的初始化,有以下两种方式,这也是面试中经常考到的经典题目: 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,如: 1 //只是指定初始值,并没有指定数组的长…
原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arrays.copyOf()可以简便的创建数组副本. 5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容.  源码展示: 1 public class Array…
  Java数组技巧攻略 0.  声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {"a","b","c", "d", "e"}; String[] cArray = new String[]{"a","b","c","d",…
1)Java数组对象的大小是固定不变的,数组对象是不可扩容的.利用数组复制方法可以变通的实现数组扩容.System.arraycopy()可以复制数组.Arrays.copyOf()可以简便的创建数组副本. 创建数组副本的同时将数组长度增加就变通的实现了数组的扩容. import java.util.Arrays; 2 3 /** 数组变长算法! 4 * 数组对象长度不可改变 5 * 但是很多实际应用需要长度可变的数组 6 * 可以采用复制为容量更大的新数组, 替换原数组, 实现变长操作 7 *…
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论坛询问,按别人的说法解决问题之后很高兴,但既不知道为什么错,也不知道为什么对,只是盲目地抄袭别人的说法,最后结果只有两种: 一, 久而久之,热情丧失,最后放弃学习. 二,大部分常见问题都问遍了,最后也可以从事一些重复性开发,但一旦遇到新的问题,又将束手无策." 这是<疯狂Java讲义>李…
Java数组与vector互转 /* Object[] object1 = null ; //数组定义 Vector<Object> object2;//Vector定义 object2 = new Vector<Object>(Arrays.asList(object1));// array -> vector object1 = object2 .toArray( new Object[object2 .size()]);// vector ->array */ I…
public class PerformanceTester { public static final int TIMES=100000; public static abstract class Tester{ private String operation; public Tester(String operation){this.operation=operation;} public abstract void test(List<String> list); public Str…