JAVA基础知识点(十)--stringbuffer类、System类、RunTime类、日期类、数学类、随机数类

一、stringbuffer

package cn.itcast.stringbuffer;

字符串特点:字符串是常量;它们的值在创建之后不能更改.

字符串的内容一旦发生了变化,那么马上会创建一个新的对象。

注意:字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象。

如果需要频繁修改字符串的内容,建议使用字符串缓冲类(StringBuffer)。

笔试题目:使用Stringbuffer无参的构造函数创建一个对象时,默认的初始容量是多少?如果长度不够使用了,自动增长多少倍?

StringBuffer 底层是依赖了一个字符数组才能存储字符数据的,该字符串数组默认的初始容量是16,如果字符数组的长度不够使用死,自动增长1倍。

StringBuffer 其实就是一个存储字符的容器。

 

 

容器的具备的行为

增加

         append(booleanb)   可以添加任意类型的数据到容器中

         insert(intoffset, boolean b) 指定插入的索引值,插入对应的内容。

删除

         delete(intstart, int end) 根据指定的开始与结束的索引值删除对应的内容。

         deleteCharAt(intindex)  根据指定的索引值删除一个字符。

修改

         replace(intstart, int end, String str)根据指定的开始与结束索引值替代成指定的内容。

         reverse()  翻转字符串缓冲类的内容。  abc--->cba

   setCharAt(int index, char ch) 把指定索引值的字符替换指定的字符。

   substring(int start, int end) 根据指定的索引值截取子串。

ensureCapacity(intminimumCapacity) 指定StringBuffer内部的字符数组长度的。

查看

         indexOf(Stringstr, int fromIndex)查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。

         lastIndexOf(Stringstr)

         capacity()查看当前字符数组的长度。

         length()

         charAt(intindex)

         toString()  把字符串缓冲类的内容转成字符串返回。

        

StringBuffer StringBuilder的相同处与不同处:

         相同点:

         1.两个类都是字符串缓冲类。2.两个类的方法都是一致的。

         不同点:

         1.StringBuffer是线程安全的,操作效率低,StringBuilder是线程非安全的,操作效率高。

         2.StringBufferjdk1.0出现的,StringBuilderjdk1.5的时候出现的。

推荐使用: StringBuilder,因为操作效率高。

        

 

二、System

System 系统类主要用于获取系统的属性数据。

System类常用的方法:

        arraycopy(Object src, int srcPos, Objectdest, int destPos, int length)

从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束

                  src-源数组。

                  srcPos-源数组中的起始位置。

                  dest-目标数组。

                  destPos-目标数据中的起始位置。

                  length-要复制的数组元素的数量。

         currentTimeMillis() 返回以毫秒为单位的当前时间。

getProperty获取当前系统系统。      

         exit(intstatus) 退出jvm 如果参数是0表示正常退出jvm,非0表示异常退出jvm   

         gc()   建议jvm赶快启动垃圾回收期回收垃圾。

         getenv(Stringname)根据环境变量的名字获取环境变量。

         getProperty(key)获取用指定键描述的系统属性    

         finalize() 如果一个对象被垃圾回收器回收的时候,会先调用对象的finalize()方法。

 

class Person{

         Stringname;

         publicPerson(String name) {

                  this.name= name;

         }

         @Override

         publicvoid finalize() throws Throwable {

                  super.finalize();

                  System.out.println(this.name+"被回收了..");

         }

}

 

public class Demo1 {

         publicstatic void main(String[] args) {

                  /*

                  int[]srcArr = {10,12,14,16,19};

                  //srcArr的数组元素拷贝到destArr数组中。

                  int[]destArr = new int[4];

                 

                  System.arraycopy(srcArr,1, destArr, 0,4);

                  //System.exit(0);//jvm退出.. 注意: 0或者非0的数据都可以退出jvm。对于用户而言没有任何区别。

                  System.out.println("目标数组的元素:"+Arrays.toString(destArr)); // 0 14 16 0

                  System.out.println("当前的系统时间:"+ System.currentTimeMillis());

                  System.out.println("环境变量:"+System.getenv("JAVA_HOME"));

                  for(inti = 0 ; i<4; i++){

                          newPerson("狗娃"+i);

                          System.gc();//建议马上启动垃圾回收期

                  }

                  Propertiesproperties = System.getProperties();  //获取系统的所有属性。

                  properties.list(System.out);

                  */

                  Stringvalue = System.getProperty("os.name");//根据系统的属性名获取对应的属性值

                  System.out.println("当前系统:"+value);

         }

        

}

 

 

三、RunTime

RunTime  该类类主要代表了应用程序运行的环境。

getRuntime()  返回当前应用程序的运行环境对象。

exec(String command) 根据指定的路径执行对应的可执行文件。

freeMemory()   返回 Java 虚拟机中的空闲内存量。。以字节为单位

maxMemory()    返回 Java 虚拟机试图使用的最大内存量。

totalMemory()   返回 Java 虚拟机中的内存总量

 

public class Demo2 {

         publicstatic void main(String[] args) throws IOException, InterruptedException {

                  Runtimeruntime = Runtime.getRuntime();

//              Processprocess = runtime.exec("C:\\Windows\\notepad.exe");

//              Thread.sleep(3000);//让当前程序停止3秒。

//              process.destroy();

                  System.out.println("Java虚拟机中的空闲内存量。"+runtime.freeMemory());

                  System.out.println("Java虚拟机试图使用的最大内存量:"+ runtime.maxMemory());

                  System.out.println("返回 Java虚拟机中的内存总量:"+runtime.totalMemory());

         }

}

 

 

四、日期类

/*

日期类 Date

Calendar

日期格式化类    SimpleDateFormat

 

 */

public class Demo3  {

         publicstatic void main(String[] args) throws ParseException {

                  /*Datedate = new Date(); //获取当前的系统时间

                  System.out.println("年份:"+date.getYear());*/

                  /*

                  Calendarcalendar = Calendar.getInstance(); //获取当前的系统时间。

                  System.out.println("年:"+calendar.get(Calendar.YEAR));

                  System.out.println("月:"+(calendar.get(Calendar.MONTH)+1));

                  System.out.println("日:"+calendar.get(Calendar.DATE));

                 

                  System.out.println("时:"+calendar.get(Calendar.HOUR_OF_DAY));

                  System.out.println("分:"+calendar.get(Calendar.MINUTE));

                  System.out.println("秒:"+calendar.get(Calendar.SECOND));

                 

                  //显示当前系统时间: 20141226  xxxxxx  

                 

                   * 日期格式化类    SimpleDateFormat

                   *                  作用1:可以把日期转换转指定格式的字符串     format()

                   *                  作用2:可以把一个字符转换成对应的日期。    parse()  生日

                   *          

                   */

                  Datedate = new Date(); //获取当前的系统时间。

                  SimpleDateFormatdateFormat = new SimpleDateFormat("yyyyMMdd   HH:mm:ss") ; //使用了默认的格式创建了一个日期格式化对象。

                  Stringtime = dateFormat.format(date);  //可以把日期转换转指定格式的字符串

                  System.out.println("当前的系统时间:"+time);

                 

                  Stringbirthday = "20001226   11:29:08";

                  Datedate2 = dateFormat.parse(birthday);  //注意:指定的字符串格式必须要与SimpleDateFormat的模式要一致。

                  System.out.println(date2);

                 

                  Datedate21 =new Date();

                  SimpleDateFormatdateFormat2 = new SimpleDateFormat("yyyyMMdd  HH:mm:ss");

                  Stringtime2 =dateFormat.format(date21);

                  Stringtime21=dateFormat.format(date);

                  System.out.println("当前的系统时间:"+time);

                  Stringbirthday1= "20001226  11:28:08";

                  Datedate22=dateFormat.parse(birthday1);

                  System.out.println(date22);

         }

}

 

 

 

五、数学类

Math 数学类,主要是提供了很多的数学公式。

 abs(double a) 获取绝对值

 ceil(double a) 向上取整

 floor(double a) 向下取整

 round(float a)  四舍五入

 random()  产生一个随机数.大于等于 0.0 且小于 1.0的伪随机 double

 

 

public class Demo4 {

         publicstatic void main(String[] args) {

                  System.out.println("绝对值:"+Math.abs(-3));

                  System.out.println("向上取整:"+Math.ceil(3.14));

                  System.out.println("向下取整:"+Math.floor(-3.14));//

                  System.out.println("四舍五入:"+Math.round(3.54));

                  System.out.println("随机数:"+Math.random());

         }

}

 

 

六、随机数类

import java.util.Random;

随机数类

Random

 

需求:编写一个函数随机产生四位的验证码。

 

public class Demo5 {

         publicstatic void main(String[] args) {

                  Randomrandom = new Random();

                  intrandomNum = random.nextInt(10)+1; //产生的随机数就是0-10之间

                  System.out.println("随机数:"+randomNum);

                  char[]arr = {'','','','a','Q','f','B'};

                  StringBuildersb = new StringBuilder();

                  Randomrandom = new Random();

                  //需要四个随机数,通过随机数获取字符数组中的字符,

                  for(inti  = 0 ; i< 4 ; i++){

                          intindex = random.nextInt(arr.length);  //产生的随机数必须是数组的索引值范围之内的。

                          sb.append(arr[index]);

                  }

                  System.out.println("验证码:"+sb);

         }

        

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值