常用类System:
1.System类代表当前Java程序的运行平台,程序不能创建System类的对象, 该类提供了一些类变量
和类方法,可以直接通过System类来调用这些类变量和类方法。
如:
输出-------
输出到控制台:System.out.println(); ----有换行功能;
System.out.print(); ----没有换行功能;
打印输出错误信息到控制台:System.err.println();
输入-------
System.in;
语法:Scanner scanner=new Scanner(System.in);
数据类型 a=scanner.nextInt();
时间:
2.获取以毫秒为单位的当前时间;
语法:long 变量名=System.currentTimeMillis();
3.获取以毫纳秒为单位的当前时间;
语法:long 变量名=System.nanoTime();
1秒=1000毫秒;1s=1000ms;
1毫秒=1000微秒;1ms=1000us;
1微秒=1000纳秒;1us=1000ns;
System.exit;终止当前正在运行的 Java 虚拟机;
System.gc();垃圾回收;可通知jvm在空闲的时候,进行垃圾回收;
Map envMap=System.getenv();可获取到系统上所配置的环境变量;括号内可传入指定变量的名称;且返回对应的路径;
System.getProperty(“os.name”);可返回指定键指示的系统属性;
StringBuffer和StringBuilder:
1.在Java中,拼接字符串的时候,一般使用的都是“+”加号,而使用“+”加号拼接,在性能上、速度上,一般都是不够好的,且String类对象是不可变的,一旦修改String的值,就是隐形的重建了一个对的对象,释放了原来的String对象;
2.StringBuffer和StringBuilder类是可以通过append()、insert()、reverse()、等方法来修改值的,创建对象也是可变的;
3.StringBuffer类和StringBuilder类的方法是通用的;只是new的方式不一样;
4.StringBuffer类的容量默认下是16;也可以指定容量,该类的容量从理论上说是无限大的,只要内存够大就可以;
5.capacity()容量和length()长度是不一样的;
6.StringBuffer:线程安全的;StringBuilder:线程非安全的
7.三者的执行速度比较为:StringBuilder>StringBuffer>String
Java内存分析:
1.在JVM中,有三大块:方法区、堆内存、栈内存;
1.1三块内存之中,变化最频繁的是栈内存;最先有数据的是方法区;垃圾回收器主要针对堆内存;
2.方法区中存放代码块,在方法区执行代码块的时候,会在栈内存中开辟一个运行空间;
3.代码块的(成员变量)才会在栈内存中运行(压栈);
4.而代码块的(实例对象)则在堆内存中开辟运行空间;
5.实例对象的语法: 引用数据类型 变量名=new 实例对象名
实例对象在堆内存中存放实例的信息,而实例对象赋值给变量名之后,(因为该处变量名属于局部变量),所以该变量名又会在栈内存中存放数据,(由于基本数据类型在栈内存中存放的是字面值,而引用数据类型在栈内存中存放的则是一个来自于堆内存的内存地址)该内存地址赋值给了一个变量名,该变量名又统称‘引用’
6.在C语言中,程序员可以直接通过指针去操纵堆内存;但是在Java中则不行,java为了安全,屏蔽了指针的概念,若想操纵堆内存中的数据,必须通过栈内存中的‘引用’去访问堆内存中的对象的内部实例变量;
7.访问实例变量的语法格式:
读取数据:引用.变量名;
修改数据:引用.变量名=值;
8.局部变量在栈内存中存储;
成员变量中的实例变量在堆内存中的java对象内部存储;
每一个局部变量都会在栈内存中开辟一个运行空间,
每new一个实例变量都会在堆内存中开辟一个存储空间,但也并不是只有new才能开辟空间
9.实例变量出现在类体当中;
如:int no;
int是一种基本数据类型;
no是一个实例变量;
String name;
String是一种引用数据类则;
name是一个实例变量,同时也是一个引用;
10.基本数据类型有:8种(固定的);
引用数据类型有:3种,分别是:类、数组、接口;
而类,除了sun公司提供的String、System等之外;程序员还可以自己定义引用数据类型的类;
11.变量分类:
局部变量(声明在方法体当中)
成员变量(声明在方法体之外)