当前位置: 首页 > news >正文

做电影电视剧网站推广开发一平方米多少钱

做电影电视剧网站推广,开发一平方米多少钱,成都快速建网站,电商网站开发与运营一、数组 数组是一个容器#xff0c;可以存入相同类型的多个数据元素。 数组局限性#xff1a; ​ 长度固定#xff1a;#xff08;添加–扩容#xff0c; 删除-缩容#xff09; ​ 类型是一致的 对象数组 #xff1a; int[] arr new int[5]; … Student[] arr …一、数组 数组是一个容器可以存入相同类型的多个数据元素。 数组局限性 ​ 长度固定添加–扩容 删除-缩容 ​ 类型是一致的 对象数组 int[] arr new int[5]; … Student[] arr new Student[5]; Student[] arr new Student[3];Student stu new Student(张三,18);Student stu2 new Student(李四,28);Student stu3 new Student(王老吉,38);arr[0] stu;arr[1] stu2;arr[2] stu3;System.out.println(arr[0].name);//Object类型的数组可以存放任意引用类型, 如果是基本类型会自动装箱Object[] obj new Object[5];obj[0] new Student(赵四,18);obj[1] new Teacher(杨老师,18);obj[2] abc;obj[3] 111;obj[4] true;二、集合 集合集合是java中提供的一种容器可以用来存储多个数据。 特点 长度不固定还可以存储不同的数据但是一般都用同一类型 集合和数组既然都是容器它们有啥区别呢 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候使用集合进行存储。 1.集合的体系 2.Collection 常用的方法 2.1基本功能 public boolean add(E e) 把给定的对象添加到当前集合中 。public void clear() :清空集合中所有的元素。public boolean remove(E e): 把给定的对象在当前集合中删除。public boolean contains(E e): 判断当前集合中是否包含给定的对象。public boolean isEmpty(): 判断当前集合是否为空。public int size(): 返回集合中元素的个数。public Object[] toArray(): 把集合中的元素存储到数组中。 2.2高级功能 boolean addAll(Collection? extends E c) 添加一个集合到当前集合boolean removeAll(Collection? c) 移除一个集合元素boolean retainAll(Collection? c) 两个集合都有的元素思考元素去哪里?boolean又是什么意思?boolean containsAll(Collection? c) 判断当前集合是否包含指定集合的元素 一个还是所有? 2.3集合的遍历 public static void main(String[] args) {Collection c new ArrayList();c.add(hello);c.add(java);c.add(collection);//遍历集合Object[] arr c.toArray();//String - Objectfor(int i0;iarr.length;i){String s (String)arr[i];System.out.println(s);}}3.Iterator 迭代器 3.1迭代器的介绍 专门为集合提供遍历的一种技术 3.2迭代器的怎么使用 Collection c new ArrayList();Student student new Student(张三,18);Student student2 new Student(李四,28);Student student3 new Student(王老吉,38);c.add(student);c.add(student2);c.add(student3);Iterator iterator c.iterator();while (iterator.hasNext()){Student s (Student) iterator.next();System.out.println(s);}3.3迭代器的原理 三、数据结构 数据结构的有什么用? 数据结构研究数据的存储 当你用着java里面的容器类很爽的时候你有没有想过怎么ArrayList就像一个无限扩充的数组也好像链表之类的。好用吗好用这就是数据结构的用处只不过你在不知不觉中使用了。 现实世界的存储我们使用的工具和建模。每种数据结构有自己的优点和缺点想想如果Google的数据用的是数组的存储我们还能方便地查询到所需要的数据吗而算法在这么多的数据中如何做到最快的插入查找删除也是在追求更快。 我们java是面向对象的语言就好似自动档轿车C语言好似手动档吉普。数据结构呢是变速箱的工作原理。你完全可以不知道变速箱怎样工作就把自动档的车子从 A点 开到 B点而且未必就比懂得的人慢。写程序这件事和开车一样经验可以起到很大作用但如果你不知道底层是怎么工作的就永远只能开车既不会修车也不能造车。当然了数据结构内容比较多细细的学起来也是相对费功夫的不可能达到一蹴而就。我们将常见的数据结构堆栈、队列、数组、链表和红黑树 这几种给大家介绍一下作为数据结构的入门了解一下它们的特点即可。 1.常见的数据结构 数据存储的常用结构有栈、队列、数组、链表和红黑树。我们分别来了解一下 2.栈队列 3.数组与链表 数组 利于查询 不利于增删改 链表不利于查询 利于增删改 根据需求选择对应的数据形式进行存储 四、List 接口的方法 void add(int index, E element) Object get(int index) ListIterator listIterator() 返回列表中的列表迭代器按适当的顺序。 Object set(int index, E element) 用指定的元素可选操作替换此列表中指定位置的元素。 ListIterator listIterator() 此方法重要不但可以正向还可以反向还可以进行添加和修改 在迭代器在迭代元素时用集合去操作出现以下的异常 ConcurrentModificationException 并发修改异常 解决方法 ​ 迭代器在进行迭代元素时就用迭代器去修改包括添加 ​ 集合遍历元素时就用集合去修改 1.List 子类特点 ArrayList类​ 底层数组 查询快增删改慢​ 线程不安全 不安全效率高Vecktor类​ 底层数组 查询快增删改慢​ 线程安全 安全效率低LinkedList类​ 底层链表 查询慢增删改快​ 线程不安全 不安全效率高以上子类的选择根据项目的需要来做 (看情况)2.AarryList的方法使用 四种遍历 ArrayList list new ArrayList();list.add(hello);list.add(world);list.add(java);//数组Object[] arr list.toArray();for(int i0; iarr.length;i){String s (String)arr[i];System.out.println(arr[i]);}//迭代器Iterator iterator list.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}//列表迭代器ListIterator listIterator list.listIterator();while (listIterator.hasNext()){System.out.println(listIterator.next());}//size get()for(int i0; ilist.size();i){String s (String)list.get(i);System.out.println(arr[i]);}3.Vector类特有方法 addElement(E obj) 将指定的组件添加到此向量的末尾将其大小增加1。 elementAt(int index) 返回指定索引处的组件。 elements() 返回此向量的组件的枚举。 firstElement() 返回此向量的第一个组件索引号为 0的项目。 JDK升级原因 效率简化书写安全 /** Vector类特有的方法* addElement(E obj) 将指定的组件添加到此向量的末尾将其大小增加1。 add()elementAt(int index)返回指定索引处的组件。 get()elements() 返回此向量的组件的枚举。 iteratorhasMoreElements() hasNext()nextElement() next()firstElement() 返回此向量的第一个组件索引号为 0的项目。* */Vector vector new Vector();vector.addElement(hello);vector.addElement(world);vector.addElement(java);// for(int i0;ivector.size();i){ // System.out.println(vector.elementAt(i)); // } // System.out.println(vector.firstElement());Enumeration enumeration vector.elements();while (enumeration.hasMoreElements()){System.out.println(enumeration.nextElement());}4.LinkedList类特有的方法 addFirst(E e) 在该列表开头插入指定的元素。 addLast(E e) 将指定的元素追加到此列表的末尾。 五、泛型 泛型 是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊类型 参数化类型把类型当做参数一样进行传递 格式 ​ 数据类型 此处数据类型只能是引用类型 好处 把运行时报的错误提前到了编译期间避免了强制转换优化程序的设计解决了黄色警告线 1.泛型的应用 1.1类上定义泛型 public class ObjectToolT {private T obj;public T getObj() {return obj;}public void setObj(T obj) {this.obj obj;}}1.2方法上定义泛型 在方法中定义泛型相当于可以传任意类型的参数 public T void show(T t){System.out.println(t);}1.3接口上定义泛型 方法1 class MyListImpl implements MyListString{Overridepublic void show(String s) {} }方法2 class MyListImplT implements MyListT{Overridepublic void show(T s) {} }2.泛型通配符 ? : 任意类型 ? extends E : 向下限定 E及子类 ? supter E : 向上限定 E及父类 # 六、作业 1.ArrayList去重复新建集合不新建集合 2.用 LinkedList 类去模拟一个栈的集合类add 方法取方法  先进后出 3.使用Collection , ArrayList LinkedList, Vecktor 实现字符串集合的遍历 实现自定义对象的遍历 4.代码题 某中学有若干学生(学生对象放在一个List中)每个学生有一个姓名属性、年龄属性(int)、班级名称属性(String)和考试成绩属性(int) 某次考试结束后每个学生都获得了一个考试成绩。请打印出所有学生分数总和,和平均年龄 # 七、面试题 ## 第一题**List anew ArrayList() 和 ArrayList a new ArrayList()的区别** List list new ArrayList(); 这句创建了一个 ArrayList 的对象后把上溯到了 List。此时它是一个List对象了有些ArrayList 有但是 List 没有的属性和方法它就不能再用了。 ArrayList listnew ArrayList(); 创建一对象则保留了ArrayList 的所有属性。所以需要用到 ArrayList 独有的方法的时候不能用前者。实例代码如下 List list new ArrayList(); ArrayList arrayList new ArrayList(); list.trimToSize(); //错误没有该方法。 arrayList.trimToSize(); //ArrayList里有该方法。 ## 第二题**说一下ArrayList的扩容机制** 1带初始容量参数的构造函数用户可以自己定义容量 2默认构造函数使用初始容量10构造一个空列表(无参数构造) 3构造包含指定collection元素的列表这些元素利用该集合的迭代器按顺序返回 首先获取数组的旧容量然后计算新容量的值计算使用位运算将其扩容至原来的1.5倍。 得到新容量的值后校验扩容后的容量是否大于需要的容量如果小于则把最小需要容量当作扩容后的新容量。并确保扩容后的容量不超过数组能设置的最大大小值。 最后将老数组的数据复制到新的数组中。 ## 第三题Vector和ArrayList以及LinkedList区别和联系以及分别的应用场景? Vector的底层的实现其实是一个数组,是线程安全的实现类,方法都有**synchronized** LinkedList的底层其实是一个**双向链表**,每一个对象都是一个Node节点,Node就是一个静态内部类,它是**线程不安全的,**所有的方法都没有加锁或者进行同步 这里先简单介绍一下,下面会对**ArrayList**的扩容机制进行分析 ArrayList是**线程不安全**的,如果不指定它的初始容量,那么它的初**始容量是0**,当**第一次**进行添加操作的时候它的容量将**扩容为10** **三种集合的使用场景** 1. Vector很少用,有其他线程安全的List集合 2. 如果需要大量的添加和删除则可以选择LinkedList 原因是:它查询的时候需要遍历整个链表,插入和删除的时候无需移动节点 3. 如果需要大量的查询和修改则可以选择ArrayList 原因:底层为数组,删除和插入需要移动其他元素,查询的时候根据下标来查 ## 第四题我们想要使用线程安全的List集合,你有什么办法? 1:可以使用Vector 2.自己重写类似于ArrayList的但是线程安全的集合 3.可以使用**Collections(工具类)**中的方法,将ArrayList变成一个线程安全的集合 **4.可以使用java.util.concurrent包下的CopyOnWriteArrayList,它是线程安全的** ## 第五题**那你说说CopyOnWriteArrayList是怎么实现线程安全的?** 它是juc包下的,专门用于并发编程的,他的设计思想是:**读写分离**,**最终一致,写时复制** **它不能指定容量,初始容量是0.它底层也是一个数组,集合有多大,底层数组就有多大,不会有多余的空间** **CopyOnWriteArrayList的缺点** 底层是数组,删除插入的效率不高,写的时候需要复制,占用内存,浪费空间,如果集合足够大的时候容易触发GC 数据一致性问题。CopyOnWrite容器只能保证数据的最终一致性不能保证数据的实时一致性。所以如果你希望写入的的数据马上能读到请不要使用CopyOnWrite容器。【当执行add或remove操作没完成时get获取的仍然是旧数组的元素】。CopyOnWriteArrayList读取时不加锁只是写入和删除时加锁 应用场景:读操作远大于写操作的时候 **CopyOnWriteArrayList和Collections.synchronizedList区别** CopyOnWriteArrayList和Collections.synchronizedList是实现线程安全的列表的两种方式。两种实现方式分别针对不同情况有不同的性能表现其中CopyOnWriteArrayList的写操作性能较差而多线程的读操作性能较好。而Collections.synchronizedList的写操作性能比CopyOnWriteArrayList在多线程操作的情况下要好很多而读操作因为是采用了synchronized关键字的方式其读操作性能并不如CopyOnWriteArrayList。因此在不同的应用场景下应该选择不同的多线程安全实现类。
http://www.pierceye.com/news/530169/

相关文章:

  • 网站建设要求 优帮云福州模板建站定制网站
  • wordpress本地更换为网站域名jsp网站开发书籍
  • 做一个网站的流程沧州网站建设
  • 山东省城乡住房建设厅网站住房建设部网站监理员
  • 怎么做百度网站验证保健品商城网站模板
  • 丹东市做网站广东做网站的公司
  • 网站收录大全销售推广
  • 网站发展历程东莞企业网站建设制作
  • 厦门市建设局查询保障摇号网站首页做房产网站长
  • 公司网站建设的普遍性长沙建站网
  • 东莞英文建站公司api模式网站开发
  • 参与网站网站建设可判几年大同住房和城乡建设网站
  • 住房和城乡建设部网站投诉电话哈尔滨网页设计网站模板
  • 西安网站制作哪家公司好阳江房产网最新楼盘江楼盘
  • 科技馆网站建设网络营销实务教案
  • 网站上线倒计时html5模板文创产品设计流程
  • 建设项目竣工环保验收公示网站网站建设具体实施方案
  • 蜜淘app在那个网站做的濮阳吧
  • 建网站市场哪家网站开发好
  • 找生产厂家的网站宁波seo运营推广平台排名
  • 淘宝的网站建设的目标昌大建设集团是哪里的
  • 毕业设计h5网站制作较好的网站设计师培训学校
  • 做淘宝券推广的网站有哪些石碣镇做网站
  • 贵阳网站制作免费桂林市工程建设项目招标网站
  • 南昌专业网站排名推广做网站编辑我能力得到提升
  • 网站建设行业凡科建站登录入口官方正版
  • 一般网站开发的硬件要求视觉冲击力的网站设计
  • 昆明做网站建设的公司哪家好广西建设培训网
  • 国字类型网站有哪些内容百度seo分析工具
  • 免费浪漫网页制作网站html的常用标签