常用包,String类,StringBuffer类,克服传值引用

Java常用的包有以下几个:
Java.lang,这个 包通常不用import导入,他会自动被东如,包含有String,Math,Integer,System,Runtime等类;
Java.applet 包含有创建小应用程序的类;
Java.awt,编写与平台无关的图形界面(GUI)
Java.io,输入输出操作
Java.net   网络链接
Java.util  使用工具类,数据结构相关;

-------------
八个基本类型
Long ,short,int ,float,double,char,byte,boolean;其他的数据类型都被称为“引用类型”
-------------
用两个等号组成的符号“==”是用来测试两个变量是否相等,但是如果是对象变量,则不能用这个符号,因为对象变量他的值只是指向栈内存中的一个地址,是一个引用。这时候我们需要用到equals()函数。
说到string类,string类的对象可以和任何类型的数据相加,JAVA为string类型重载了两个运算符“+”和“+=”,这是JAVA里仅有的两个被重载的运算符,而且JAVA不允许程序员自我重载运算符,相加的结果是,被加的变量以一个字符串的格式被加到string类对象的后面。但是实质上,string类是某种程度上不可变的,例如,初始化一个String str=new String("abc");我们无法对这个str对象做任何修改,不能试图对他添加或者删除元素,却允许对他重新赋。在实际的应用中,这会带来很多麻烦,因此,我们常用StringBuffer来代替String,StringBuffer类有append函数可以不断朝其末尾添加元素。它还有很多其他有用的成员函数,比如添加,删除,在JDK文档中有相应说明,见java.lang.StringBuffer类。

以下代码测试了main函数中的String[]数组用于接受命令行参数,==和equals的区别,还有重载运算符真的可以将其他变量加到String末尾来显示,虽然他没有改变String变量的值。
这里的运行是打的相应语句java Equaltest hello world它会在屏幕上输出hello world,事实上,main()函数里的args变量会接受命令行中除了java 和类名之外的其他参数,以空格为间隔。
class Equaltest
{
 public static void main(String[] args)
 {
  if(args.length>0)         
  {
   for(int i=0;i   {
    System.out.println(args[i]);
   }
  }
  int a=1,b=1;
  if(a==b)
  {
   System.out.println("a==b");
  }
  else
  {
   System.out.println("a!=b");
  }
  String str1,str2;
  str1=new String("abc");
  str2=new String("abc");
  if(str1.equals(str2))
  {
   System.out.println("str1 equals str2");
  }
  else
  {
   System.out.println("str2 not equals str2");
  }
  int i=1;
  char c='m';
  float f=1.5f;
  System.out.println(str1+i+c+f);
 }
}
以下代码测试了StringBuffer中的append()成员和toString(),toString()成员是将改变后的StringBuffer对象生成一个String对象,事实上,这个成员会在编译时候被自动调用。
class SbTest
{
 public static void main(String[] args)
 {
  StringBuffer sb=new StringBuffer();
  sb.append('s').append('b').append("is").append("you").toString();
  System.out.println(sb);
 }
}

以下代码测试了引用对象是如何克服传值引用的单向性的,即向函数传递参数而实质上却能改变传递值的值。这如果了解栈内存和堆内存的格式,可以有更好的理解。
class StackTest
{
  int num;
  StackTest(int i)
  {
   this.num=i;
  }
}
class Test5
{
  int[] num=new int[2];
   public static void swap(int[] num)
  {
   num[0]=num[0]+num[1];
   num[1]=num[0]-num[1];
   num[0]=num[0]-num[1];
  }
 public static void swap(StackTest s1,StackTest s2)
 {
     s1.num=s1.num+s2.num;
     s2.num=s1.num-s2.num;
     s1.num=s1.num-s2.num;
 }
 public static void main(String[] args)
 {
  int num[]=new int[2];
  num[0]=1;
  num[1]=2;
  StackTest s1=new StackTest(1);
   StackTest s2=new StackTest(2);

  swap(num);
 swap(s1,s2);
 System.out.println(num[0]+" "+num[1]);
 System.out.println(s1.num+" "+s2.num);
 }

你可能感兴趣的:(常用包,String类,StringBuffer类,克服传值引用)