Java总结(15) 加强for 装箱
来源:互联网 发布:会计课程 知乎 编辑:程序博客网 时间:2024/06/16 22:57
加强for
语法:for ( type 变量名:集合变量名 ) { … }
注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类。
举例:
public static int add(int x,int ...args) { int sum = x; for(int arg:args) { sum += arg; } return sum;}
加强for用法:
①:首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。②:ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
③:而对于LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用增强for循环,也就是iterator。
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;/** * 增强for循环用法 * */public class ForTest { public static void main(String[] args) { //List<Integer> list = new ArrayList<Integer>(); List<Integer> list = new LinkedList<Integer>(); for (int i = 0; i < 50000; i++) { list.add(11); } int resutl = 0; long start = System.currentTimeMillis(); for (int i = 0; i < list.size(); i++) { resutl = list.get(i); } System.out.println("普通循环使用了"+ (System.currentTimeMillis() - start)+"毫秒"); start = System.currentTimeMillis(); for (int c2 : list) { } System.out.println("增强for循环使用了"+ (System.currentTimeMillis() - start)+"毫秒"); } }
自动装箱:
概述:
JAVA JDK1.5提供了自动装箱(Autoboxing)与自动拆箱(AutoUnboxing)功能,所谓自动装箱,就是可以把一个基本类型变量直接赋给对应的包装类变量,或者赋给Object变量;自动拆箱则与之相反,允许直接把包装类对象直接赋给一个对应的基本类型变量。如下例:
public class AutoBoxingUnboxing{ public static void main(String args []){ //直接把一个基本类型变量赋给Integer对象 Integer inObj = 5; //直接把一个boolean类型变量赋给一个Object类型的变量 Object boolobj = true; //直接把一个Integer对象赋给int类型的变量 int it = inObj; if(boolobj instanceof Boolean){ //先把Object对象强制类型转换为Boolean类型,再赋给boolean变量 boolean b = (Boolean)boolobj; System.out.println(b); } } }进行自动装箱和自动拆箱时必须注意类型匹配,例如Integer只能自动拆箱成int类型的变量,不要试图拆箱成boolean类型的变量;与之类似的是,int类型的变量只能自动装箱成Integer对象(即使赋给Object类型的变量,那只是利用了JAVA的向上自动转型特性),不要试图装箱成Boolean对象。
除此之外,包装类还可实现基本类型变量和字符串之间的转换,除了Chracter之外的所有包装类都提供了一个parseXxx(String s)静态方法,用于将一个特定字符串转换成基本类型变量;除此之外,在String类里也提供了多个重载valueOf()方法,用于将基本类型变量转换成字符串,如下例:
public class Primitive2String{ public static void main(String args []){ String intStr = "123"; int it = Integer.parseInt(intStr); System.out.println(it); String floatStr = "4.56"; float ft = Float.parseFloat(floatStr); System.out.println(ft); //把一个float变量转换成String变量 String ftStr = String.valueOf(2.345f); System.out.println(ftStr); //把一个布尔变量转换成String变量 String boolStr = String.valueOf(true); System.out.println(boolStr.toUpperCase()); } }
如果希望把基本类型变量转换成字符串,还有一种更简单的方法,将基本类型变量和""进行连接运算,系统会自动把基本类型变量转换成字符串。//intStr的值为“5”
String intStr = 5 + "";
java中数据类型分为两种 : 基本数据类型 引用数据类型(对象)
在 java程序中所有的数据都需要当做对象来处理,针对8种基本数据类型提供了包装类,如下:
int --> Integer
byte --> Byte
short --> Short
long --> Long
char --> Character
double --> Double
float --> Float
boolean --> Boolean
jdk5以前基本数据类型和包装类之间需要互转:
基本---引用 Integer x = new Integer(x);
引用---基本 int num = x.intValue();
1)、Integer x = 1; x = x + 1; 经历了什么过程?装箱->拆箱->装箱;
2)、为了优化,虚拟机为包装类提供了缓冲池,Integer池的大小 -128~127 一个字节的大小;
3)、String池:Java为了优化字符串操作 提供了一个缓冲池;
Integer num1 = 12;
自动拆箱:
System.out.println(num1 + 12);
基本数据类型的对象缓存:
Integer num1 = 12;
Integer num2 = 12; 这块相等,<=127都是真的
System.out.println(num1 == num2);
Integer num3 = 129; 这块不相等,因为是对象
Integer num4 = 129;
System.out.println(num3 == num4);
Integer num5 = Integer.valueOf(12);
Integer num6 = Integer.valueOf(12); 这块的道理同上
System.out.println(num5 == num6);
- Java总结(15) 加强for 装箱
- java基础加强(枚举,反射,增强for循环,可变参数,自动拆箱装箱,内省)
- Java基础加强:静态导入及可变参数和增强for循环 ,基本数据类型的自动拆箱和装箱
- Java基础加强<二>可变参数、增强for循环、基本类型的自动拆箱与装箱、枚举
- JAVA加强2总结
- Java基础加强--自动装箱、享元模式、枚举
- Java基础加强总结(1)
- Java基础加强总结(2)
- java加强--正则表达式总结
- java加强--网络编程总结
- Java基础加强反射总结
- 黑马程序员_总结15-java基础加强2
- Java SE 加强for和枚举
- JAVA 加强版的for循环
- 赞 :java 加强版for循环
- Java foreach(加强for循环)
- java自动装箱拆箱总结
- java基础加强--要点总结1
- java面试50题
- 腾讯笔试试题
- linux基础命令(2)
- 将字符串str1复制为字符串str2的三种方法
- UVA 408 Uniform Generator
- Java总结(15) 加强for 装箱
- 浅谈java异常
- 业务逻辑层的设计(四)——表模块模式简介
- 数海笔记(3)-极座标
- C# FTP操作类
- 关于缩点
- C#垃圾回收Finalize 和Dispose的理解
- Citrus Engine关于创建Tiled Map游戏的小窍门
- metasploit之db_autopwn