• 字符串相关类: String, StringBuffer

String类为不可变的字符序列

  1. String s1="hello";
  2. String s2="hello";
  3. System.out.println(s1==s2); //true
  4.  
  5. s1=new String("hello");
  6. s2=new String("hello");
  7. System.out.println(s1==s2); //false
  8. System.out.println(s1.equals(s2)); //true
  9.  
  10. char c[]={'s','u','n',' ', 'j','a','v','a'};
  11. String s4=new String(c);
  12. String s5=new String(c,4,4);
  13. System.out.println(s4); // sun java
  14. System.out.println(s5); //java

String类常用方法:

  1. public class Test{
  2. public static void main(String[] args){
  3. String s1="sun java", s2="sun Java";
  4. System.out.println(s1.charAt(1)); //s
  5. System.out.println(s1.length()); //8
  6. System.out.println(s1.indexOf("java")); //4
  7. System.out.println(s1.indexOf("Java")); //-1
  8. System.out.println(s1.equals(s2)); //false
  9. System.out.println(s1.equalsIgnoreCase(s2)); //true
  10.  
  11. String s="我是程序员,我在学java";
  12. String sr=s.replace("我","你");
  13. System.out.println(sr); //你是程序员, 你在学java
  14. }
  15. }

  

  1. public class Test{
  2. public static void main(String[] args){
  3. String s="Welcome to Java World!";
  4. String s1=" sun java ";
  5.  
  6. System.out.println(s.startsWith("Welcome")); //true
  7. System.out.println(s.endsWith("World")); //false
  8.  
  9. String sL=s.toLowerCase();
  10. String sU=s.toUpperCase();
  11. System.out.println(sL); // Welcome to Java World!
  12. System.out.println(sU); // WELCOME TO JAVA WORLD!
  13.  
  14. String subS=s.substring(11);
  15. System.out.println(subS); // Java World!
  16. String sp=s1.trim();
  17. System.out.println(sp); //sun java
  18.  
  19. }
  20. }

  

String类还有个静态重载方法 public static String valueOf(Object obj); 用于把obj转换成String类型. 如果是对象, 是通过toString方法来转换.

public String[] split(String regex): 将一个字符串按照指定的分隔符分隔, 返回分割后的字符串数组.

  1. public class Test{
  2. public static void main(String[] args){
  3. int j=1234567;
  4. String sNumber=String.valueOf(j); //int转换成String
  5.  
  6. System.out.println("j是"+sNumber.length()+"位数"); //7
  7.  
  8. String s="Mary, F, 1976";
  9. String[] sPlit=s.split(",");
  10. for(int i=0;i<sPlit.length;i++)
  11. System.out.println(sPlit(i)); // Mary
  12. //F
  13. //1976
  14. }
  15. }

 

一个字符串里有多少个大写字母,多少个小写字母,多少个其他字符:

  1. public class TestStringCase {
  2. public static void main(String[] args) {
  3. String s = "ABAabb$&^$#BAAb898B#@%aa";
  4. int cU = 0, cL = 0, cO = 0;
  5. for(int i=0; i<s.length(); i++) {
  6. char c = s.charAt(i);
  7.  
  8. if(c >= 'A' && c <= 'Z') { //if(Character.isLowerCase(c))
  9. cU ++;
  10. } else if( c >= 'a' && c <='z') {   //if(Character.isUpperCase(c))  
  11. cL ++;
  12. } else {
  13. cO ++;
  14. }
  15. }
  16.  
  17. System.out.println("大写:" + cU);
  18. System.out.println("小写:" + cL);
  19. System.out.println("其他:" + cO);
  20. }
  21. }

 

一个字符串里有多少个java:

  1. public class TestStringCase {
  2. public static void main(String[] args) {
  3. String s = "sunjavahpjavaokjavajjavahahajavajavagoodjava";
  4. String sToFind="java";
  5. int count = 0;
  6. int index=-1;
  7.  
  8. while((index=s.indexOf(sToFind))!=-1){
                s=s.substring(index+sToFind.length());
                count++;
             }
             System.out.println(count);
    }
    }

StringBuffer类:

String类是不可变的字符序列, 比如

可以实现, 但是内存是这样处理的,

先开辟一段新的 "hello"空间, 再创建一个"world" 空间, 最后再创建一个新的空间用于s1+s2, 然后s1重新指向新的连接的空间.

这样对内存是一种浪费.

  1. String s1="hello";
  2. String s2="world";
  3. s1+=s2; // hello world

所以用StringBuffer类替代:

添加字符用append()方法:

还可以使用的方法: insert(int offset, String str), indexOf(), substring(), length(), reverse()

  1. public class TestStringCase {
  2. public static void main(String[] args) {
  3. String s = "Microsoft";
              char[] a={'a','b','c'};
  4. StringBuffer sb1=new StringBuffer(s);
              sb1.append('/').append("IBM").append('/').append("sun");
              System.out.println(sb1); //Microsoft/IBM/sun
              StringBuffer sb2=new StringBuffer("数字");
    for(int i=0;i<=9;i++){sb2.append(i);}
    System.out.println(sb2); //数字0123456789
    sb2.delete(8,sb2.length()).insert(0,a); //从第8个截取到最后, "数字012345", 然后第0位置把a数组插进去
    System.out.println(sb2); // abc数字0123456
    System.out.println(sb2.reverse()); //543210字数cba
  5.  
  6. }

  

  

  

基本数据类型包装类: Boolean, Character, Byte, Short, Integer, Long, Float, Double.

基本数据类型都存在栈上, 如果想包装成对象分配在堆上就使用基本数据类型的包装类.

1. 对象转成基本类型

Integer i=new Integer(100);

int j=i.intValue();  //返回封装数据的int型值

2. 字符串转成基本类型

public static int parseInt(String s) throws NumberFormatException;  //字符串解析成int数据.

3. 字符串转换成 基本类型对象

public static Integer valueOf(String s) throws NumberFormatException;  字符串转换成Integer对象.

所以parseInt= valueOf+intValue

  1. public class Test{
  2. public static void main(String[] args){
        Integer i=new Integer(100);
        Double d=new Double("123.456");
        int j=i.intValue()+d.intValue();
        float f=i.floatValue()+d.floatValue();
        System.out.println(j);
        System.out.println(f);
        double pi=Double.parseDouble("3.1415926"); //字符串转换成double类型的数
        double r=Double.valueOf("2.0").doubleValue(); //先将字符串2.0转换成Double对象, 然后再转换成double值
    double s=pi*r*r;
        System.out.println(s);
    try{
          int k=Integer.parseInt("1.25"); //字符串转int不可以.
        }catch(NumberFormatException e){
          System.out.println("数据格式不对");
        }
        System.out.println(Integer.toBinaryString(123)+"B");
        System.out.println(Integer.toHexString(123)+"H");
        System.out.println(Integer.toOctalString(123)+"O");
  3. }
  4. }

把"1,2;3,4,5;6,7,8" 分隔成double的数组 

  1. public class ArrayParser
  2. {
  3. public static void main(String[] args) {
  4. double[][] d;
  5. String s="1,2;3,4,5;6,7,8";
  6. String[] sFirst=s.split(";");
  7. d=new double[sFirst.length][];
  8. for(int i=0;i<sFirst.length;i++){
  9. String sSecond=sFirst[i].split(",");
  10. d[i]=new double[sSecond.length];
  11. for(int j=0;j<sSecond.length;j++){
  12. d[i][j]=Double.parseDouble(sSecond[j]);
  13. }
  14. }
  15. for(int i =0;i<d.length;i++){
  16. for(int j=0;j<d[i].length;j++){
  17. System.out.print(d[i][j]+" ");
  18. }
  19. System.out.println();
  20. }
  21.  
  22. }
  23. }

  

Math类: abs, sqrt, max, min,random, round,

File类: java.io.File类代表系统文件名(路径和文件名)

构造方法: public File(String pathname);

静态属性: public static final String seperator

  1. package bjsxt;
  2. import java.io.*;
  3. public class TestFile {
  4. public static void main(String[] args) {
  5. String separator = File.separator;
  6. String filename = "myfile.txt";
  7. String directory = "mydir1" + separator + "mydir2";
  8. //String directory = "mydir1/mydir2";
  9. //String directory = "mydir1\\mydir2"; //这种也可以, 但是放在linux下就出错了.
  10. File f = new File(directory, filename);
  11. if (f.exists()) {
  12. System.out.println("文件名:" + f.getAbsolutePath());
  13. System.out.println("文件大小:" + f.length());
  14. } else {
  15. f.getParentFile().mkdirs();
  16. try {
  17. f.createNewFile();
  18. } catch (IOException e) {
  19. e.printStackTrace();
  20. }
  21. }
  22. }
  23. }

递归列出子目录:

  1. import java.io.*;
  2.  
  3. public class ListFile {
  4. public static void main(String[] args) {
  5. File f = new File("d:\\test");
  6. /*
  7. File[] files = f.listFiles();
  8. for(File ff : files) {
  9. System.out.println(ff.getName());
  10. }
  11. */
  12. listChilds(f, 0);
  13. }
  14.  
  15. public static void listChilds(File f, int level) {
  16.  
  17. String preStr = "";
  18. for(int i=0; i<level; i++) { preStr += " "; }
  19.  
  20. System.out.println(preStr + f.getName());
  21. if(!f.isDirectory()) return;
  22. File[] childs = f.listFiles();
  23. for(int i=0; i<childs.length; i++) {
  24. listChilds(childs[i], level + 1);
  25. }
  26. }
  27. }

  

  

枚举类:java.lang.Enum

  1. public class TestEnum{
  2. public enum MyColor{red, green, blue};
      public enum MyDoorOpener{me, mywife};
      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);
      }
  3. }

 

 

JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类的更多相关文章

  1. 【Java】Java中常用的String方法

    本文转载于:java中常用的String方法 1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.len ...

  2. [改善Java代码]正确使用String,StringBuffer,StringBuilder

    CharSequence接口有三个实现类与字符串有关:String,StringBuffer,StringBuffer.虽然它们都与字符串有关,但是其处理机制是不同的. String类是不可改变的量, ...

  3. python基础--常用模块与面向对象基础

    1常用模块 1.1 xml xml是实现不同语言或程序之间进行数据交换的协议 xml的格式如下: <?xml version="1.0"?> <data> ...

  4. 精解Mat类(一):基本数据类型-固定大小的 矩阵类(Matx) 向量类(Vector)

    一.基础数据类型 1.(基础)固定大小矩阵类 matx 说明: ①    基础矩阵是我个人增加的描述,相对于Mat矩阵类(存储图像信息的大矩阵)而言. ②    固定大小矩阵类必须在编译期间就知晓其维 ...

  5. 【Java】常用数据类型转换(BigDecimal、包装类、日期等)

    新工作转到大数据方向,每天都要面对数据类型互相转换的工作,再加上先前面试发现这部分的知识盲点, 决定复习之余自己再写一套便捷的方法,以后会比较方便.(虽然公司有现成封装的类,里头还有些遗漏的地方,暂时 ...

  6. Java基础-常用的String方法

    先从String的new的方式 说起 这是面试题里面经常出现的 算是老套路之一 就是 比较下列两个的变化 两种实例化的区别 第一种String name1 = "好人";Strin ...

  7. java中常用的String方法

    1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.length); 输出的结果是字符串长度10. 2 ...

  8. Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类

    Math Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数. 与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同 ...

  9. Java的常用类 String

    String类: 代表字符串, java程序中的所有字符串字面值(如, "abc")都是此类的实例实现 String是一个final类,代表不可变的字符序列 字符串是常量是用双引号 ...

随机推荐

  1. intent.putExtra()方法参数详解

    [开篇骂几句:fuck]1.扯淡intent.putExtra()怎么使用?2.胡说intent.putExtra(); [扯淡:其实你在问它怎么用的时候,你要明白,你知道不知道这是个什么东东,有必要 ...

  2. swfupload在chrome中点击上传图片按钮无反应的解决办法

    chrome 22.0.XXXXX dev版上传图片按钮点击无反应原因:是GOOGLE的内建Flash PPAPI外挂所导致的. 问题原因: 由于Google浏览器(Chrome),在最新测试版22. ...

  3. 1.4 测试各阶段(单元、集成、系统 、Alpha、Beta、验收)

    单元测试:单元测试是对软件基本组成单元(软件设计的最小单位)进行正确性检验的测试工作,如函数.过程(function,procedure)或一个类的方法(method).单元测试是一个方法层面上的测试 ...

  4. FZU 2113 BCD Code 数位dp

    数位dp,但是很奇怪的是我在虚拟oj上用GUC C++提交会wa,用Visual c++提交正确,但是加上注释后提交又莫名CE--好任性啊 0 ,0 题目思路:看代码吧 注释很详细 #include& ...

  5. 关于tag,viewWithTag

    iOS SDK内置了一套搜寻机制,可通过tag来查找子视图. **苹果公司很少给子视图设置tag.笔者所知范围的唯一例外出现在UIAlertView中,该类会给按钮分别设置值为1.2的标签 viewW ...

  6. MFC 透明内存DC

    在MFC中绘制比较复杂图形,通常采用双缓冲技术来绘图,的确可以大大加快绘制速度和减少闪烁,但是有些情况也不尽然. 我最近遇到了一个问题,采用的也是双缓冲来加快绘图,但是绘制效果还是不尽人意.A对象里大 ...

  7. android 中ImageButton按下改变背景图片的效果

    最近在做一个app的登陆界面,才发现原来认为很简单的UI效果,其实背后却蕴含的知识很多,积累一个算一个吧. 实现方法有两种:一种是添加代码,一种是配置xml文件. 方法一:代码添加 ImageButt ...

  8. U盘安装Centos后拔除U盘无法启动问题解决方法

    今天安装CentOS后发现把引导文件安装在U盘上了,所以不插U盘就无法进入CentOS系统,在网上找到这种方法成功摆脱U盘启动,避免重新用U盘做引导盘安装系统,简单省事,所以发个帖,留着以后备用. 1 ...

  9. update set from where

    原文链接:http://blog.csdn.net/xcbsdu/article/details/6736503 关于update set from where 下面是这样一个例子: 两个表a.b,想 ...

  10. L3,please send me a card

    expressions: a few words几句话 lend sb sth或lend sth to sb borrow sth或borrow sth from sb 都表示借,但是行为不同. wo ...