API:(Appilcation Programming Interface)
就是一些已经写好,可以直接拿来用的功能,在java中以类的形式封装;
包的作用:将所有的类库进行分类,就像一个学校分成不同学院,
常用的包:
Java.lang : 基础类,如字符串,多线程,不需要import
Java.util : 常用工具类,如集合随机产生器,日历,时钟
Java.io : 文件操作,输入输出操作
Java.net : 网络操作
Java.math : 数学运算相关操作
Java.security: 安全相关操作
Java.sql: 数据库访问
Java.text: 处理文字,日期数字,信息的格式
文档注释:
/** 文档注释 */
加在类和方法的开头,用于说明作者,时间,版本,要实现功能的详细描述等信息
通过javadoc,将注释转换为HTML文档说明;
String:
Java.lang.String 使用了final修饰,不能被继承;
字符串底层封装了字符数组及针对字符数组的操作算法;
字符串一旦创建,对象永远无法改变,但字符串引用可以重新赋值;
比如string str = “Hello World”:则在堆中有Hello World内存,栈中是str变量保存地址
如果str = str+“!”;怎在堆中加了一个“Hello World !”新的对象,由str重新指向;原先的“Hello World”会被回收
Java字符串在内存中采用Unicode编码方式,任何一个字符对应两个字节的定长编码
String常量池:
对于重复出现的字符串直接量,jvm会首先在常量池中查找,如果存在即返回该对象
字符串是不利于频繁修改的;
1 /**
2 * 用于测试String3 *@authorAdministrator4 */
5 public classdemo01 {6 public static voidmain(String[] args){7 String str ="HelloWorld";8 String str1 = "HelloWorld";//重用了str的对象
9 System.out.println(str==str1);//true
10 /*
11 * 编译器小特性:12 * 如果一个运算两边都是字面量,那么13 * 编译过程中就会计算,将结果生成在表达式的位置14 * 可以节省运算时的开销15 */
16 String str2 = "Hello"+"World";17 //String str2= "Hello World" 字节码文件中的样子,编译过程自己转变的
18 System.out.println(str==str2);//true
19
20 String str3 = new String("Hello World");21 System.out.println(str==str3);//flase 因为用的new,创建新对象
22 }23 }