本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 1871|回复: 0
打印 上一主题 下一主题

第Ⅱ期Android菜鸟饭团#Java学习#第十六课 活动笔记

[复制链接]
跳转到指定楼层
1#
发表于 2015-11-9 11:21:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
第Ⅱ期Android菜鸟饭团#Java学习#第十六课 活动笔记


StringBuffer类:
什么是buffer?
buffer指缓冲区。形象的来讲内存里面有一小块区域,放什么东西先往这一小块区域放,然后在往其他区域放。
1.java.lang.StringBuffer 代表可变的字符序列。StringBuffer和String类似,但StringBuffer可以对其字符串进行改变。
什么叫可变,什么叫不可变?
解释:
public class Test{
        public static void main(String[] args){
                String s1="hello";
                String s2="world";
                s1+=s2;
            }                           
}
怎样执行的s1+s2?并不是把整个的world的内容一下次搁在hello的后面(在hello后面马上分配一个内存,把world的内容复制过来)!为什么?因为string代表不可变的字符串序列,s1一旦分配好了就不能变了!执行过程是这样的:
   
                                                                                       
再分配另外一份内存,相当于s1与s2的总和!然后把s1的内容复制到里面,再把S2的内容复制到后面,接下来把s1的内容重新指到新的字符串上面!因为String是不能改变的字符串序列,所以执行过程很麻烦!如果要采用更有效的方法,便是使用StringBuffer类!!它是可变的字符序列,想要在它后面添加东西,可以直接添加,直接在它后面开辟内存,不需要复制了。
2.常见的构造方法:
(1)StringButter()
*表示创建一个不包含字符序列的“空”的StringButter对象。
(2)StringBuffer(String str)
*表示创建一个StringBuffer对象,包含与String对象str相同的字符序列。
3.StringBuffer常用方法:
(1)重载方法public StringBuffer append(...)可以为该StringBuffer 对象添加字符序列,返回添加后的该StringBuffer对象引用。
(2)重载方法public StringBuffer insert(...)可以为该StringBuffer 对象在指定位置插入字符序列,返回修改后的该StringBuffer对象引用。
(3)方法public StringBuffer delete(int start,int end)可以删除从start开始到end-1为止的一段字符序列,返回修改后的该StringBuffer对象引用。
(4)方法public StringBuffer reserve( )用于将字符序列逆序,返回修改后的该StringBuffer对象引用。
(5)与String类含义类似的方法。
举例:
public class Test{
        public static void main(String[] args){
                String s="Mircosoft";
                char[] a={'a','b','c'};
                StringBuffer sb1=new StringButter(s);
                sb1.append('\').append("IBM").append('\').append("SUM");
            System.out.println(sb1);
                StringBuffer sb2=new StringButter("数字");
                for(int i=0;i<=9;i++){sb2.append(i);}
                System.out.println(sb2);
                sb2.delete(8,sb2.length()).insert(0,a);
                System.out.println(sb2);
                System.out.println(sb2.reverse());
        }
}
输出结果:
Mircosoft/IBM/Sun
            数字0123456789
            abc数字012345
            54321字数cba
基本数据类型包装类
1.包装类概念
包装类(如:Integer,Double等)这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作。
int           类型的包装类是     Integer
char        类型的包装类是     Character
float        类型的包装类是     Float
boolean  类型的包装类是     Boolean
short       类型的包装类是     Short
long        类型的包装类是     Long
double    类型的包装类是     Double
byte        类型的包装类是     Byte
2.以java.lang.Integer类为例,构造方法为:
·Interger(int value)
·Interger(String s)
包装类常见方法:(以java.lang.Interger为例)
public static final int MAX_VALUE   最大的int型整数
public static final int MIN_VALUE   最小的int型整数
public long longValue()             返回封装数据的long型值
public double doubleValue()         返回封装数据的double型值
public int intValue()               返回封装数据的int型值
public static int parseInt(String s)
                  throws NumberFormatException
                                    将字符串解析成int类型数据,返回该                           
                                    数据
public static Integer valueof(String s)
                  throws NumberFormatException
                                    返回Integer对象,其中封装的整形数
                                    据为字符串s所表示
练习
题目:编写一个方法,返回一个double型二维数组,数组中的元素通过解析字符串参数获得。如字符串参数:“1,2;3,4,5;6,7,8”
对应的数组为: d[0,0]=1.0 d[0,1]=2.0
                d[1,0]=3.0 d[1,1]=4.0 d[1,2]=5.0
                d[2,0]=6.0 d[2,1]=7.0 d[2,2]=8.0
答案:
public class ArryParser{
        public static void main(String[] args){
        double[] []d;
        String s="1,2;3,4,5;6,7,8";
        String[] sFirst =s.split(";");
        d=new double[sFirst.length][];
        for(int i=0;i<sFirst.length();i++){
    String[] sScend =sFirst.split(",");
                d=new double[sScend.length];
                for(int j=0;j<sScend.length;j++){
                d[j]=Double.parseDouble(sSecond[j]);
                   }
                 }
                for(int i=0;i<d.length;i++){
                        for(intj=0;j<d.length;j++){
                                System.out.println(d[j]);
                        }
                            System.out.println();
                }
        }
}
Math类举例
java.lang.Math提供了一系列静态方法用于科学计算:其方法的参数和返回值类型一般为double型。
有:  abs                          绝对值
      acos,asin,atan,cos,sin,tan
      sqrt                         平方根
      pow(double a,double b)       a的b次幂
      log                          自然对数
      exp                          e为底指数
      max(double a,double b)
      min(double a,double b)
      random()                     返回0.0到1.0的随机数
      long round(double a)         double型的数据a转换为long型(四
                                   舍五入)
      toDegress(double angrad)     弧度->角度
      toRadians(double angdeg)     角度->弧度
举例:
public class Test{
        public static void main(String[] args){
                double a=Math.random();
                double b=Math.random();
                System.out.println(Math.sqrt(a*a+b*b));
                System.out.println(Math.pow(a, 8));
                System.out.println(Math.round(b));
                System.out.println(Math.log(Math.pow(Math.E,15)));
                double d=60.0, r=Math.PI/4;
                System.out.println(Math.toRadians(d));
                System.out.println(Math.toDegrees(r));
        }
}
输出的结果:
0.22724854767821204
            3.0369119934905976E-10
            0
            15.0
            1.0471975511965976
            45.0
File类
1.java.io.File类代表系统文件名(路径和文件名)。
2.File类常见的构造方法:
  ·public File(String pathname)
以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
  ·public File(String parent,String child)
以parent为父路径,child为子路径创建File对象。
3.File的静态属性String separator存储了当前系统的路径分隔符(/)。
4.File类常用方法:
·public boolean canRead( )      能不能读
·public boolean canWrite( )     能不能写
·public boolean exists( )       这个文件是不是存在
·public boolean isDirectory( )  是不是一个目录
·public boolean isFile( )       是不是一个文件
·public boolean isHidden( )     是不是隐藏
·public long lastModified( )    上次修改的时间(存多少毫秒数)
·public long length( )          文件里面内容的长度
·public String getName( )       拿到名字
·public String getPath( )       拿到路径
5.通过File对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)。
·public boolean createNewFile( )throws IOException
·public boolean delete( )
·public boolean mkdir( )
·public boolean mkdirs( )//创建在路径中的一系列目录
举例:
import java.io.*;
public class TestFile{
        public static void main(String[] args){
                String separator =File.separator;//先拿到当前文件的分隔符,在构建文件系统
                String filename ="myfile.txt";
                String dierctor="mydirl"+separator+"mydir2";
                //String dierctor="mydirl/mydir2";
                File f=new File(dierctory,filename);//创建一个新的File对象
        此时它只是一个对象,怎么样把他真真正正的创建出来?如下:
                if(f.exists()){
                        System.out.println("文件名:"+f.getAbsolutePath());//取得绝对路径
                        System.out.println("文件大小:"+f.length());
                        }
                else{
                        f.getParentFile().mkdirs();//取它的父路径
                        try {
                                f.createNewFile();}
                        
                        catch(IOException e){
                                e.printStackTrace();
                        }
                 }
        }
}
练习    递归列出目录结构
题目:编写一个程序,在命令行中以树状结构展现特定的文件夹及其    子文件(夹)
答案:
import java.io.*;
       public class FileList{
           public static void main(String[] args){
                 File f=new File("d:/A");//在d盘,目录名A
         tree(f,0);
            }
       private static void tree(File f, int level){
            File[] childs=f.listFiles();
           for(int i=0;i<childs.length;i++){
                System.out.println(childs.getName());
           if(childs.isDirectory()){
                        tree(childs,level+1);
                 }
          }
   }
}
枚举类型
1.只能够取特定值中的一个
2.只用enum关键字
3.是java.lang.Enum类型
例子:
public class TestEnum{
public enum Mycolor{red,green,blue};//定义一个新类型,拿这个类型定义变量只能取这三者之一
public static void main(String[] args){
        Mycolor m=Mycolor.red;
        switch(m){
        case red:
        System.out.println("red");
        break;
        case green:
        System.out.println("green");
        break;
        default:
        System.out.println("default");
        }
        System.out.println(m);
    }
}
#System.out.println=System.out.print+System.out.print(“\n”)

每一个技术小白都有一个成为大神的梦想,现在Android菜鸟饭团就给你这个成就梦想的机会。我们提供最新的Android技术教学,只要你又耐心和毅力就一定会在这里有所收获。
Android菜鸟饭团南阳GDG组织发起,秉承着开放、分享、创新的原则,希望通过GDG社区的力量能够给更多的想要学习Android开发技术的小白们创造一个学习,交流,分享的环境。同往常的GDG活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。
把你的个人信息和申请理由快快发送到android@chuang1.net,前来加入我们吧

ChinaGDG.com
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表