• 字符串相关类: String, StringBuffer

String类为不可变的字符序列

String s1="hello";
String s2="hello";
System.out.println(s1==s2); //true s1=new String("hello");
s2=new String("hello");
System.out.println(s1==s2); //false
System.out.println(s1.equals(s2)); //true char c[]={'s','u','n',' ', 'j','a','v','a'};
String s4=new String(c);
String s5=new String(c,4,4);
System.out.println(s4); // sun java
System.out.println(s5); //java

String类常用方法:

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

  

public class Test{
public static void main(String[] args){
String s="Welcome to Java World!";
String s1=" sun java "; System.out.println(s.startsWith("Welcome")); //true
System.out.println(s.endsWith("World")); //false String sL=s.toLowerCase();
String sU=s.toUpperCase();
System.out.println(sL); // Welcome to Java World!
System.out.println(sU); // WELCOME TO JAVA WORLD! String subS=s.substring(11);
System.out.println(subS); // Java World!
String sp=s1.trim();
System.out.println(sp); //sun java }
}

  

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

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

public class Test{
public static void main(String[] args){
int j=1234567;
String sNumber=String.valueOf(j); //int转换成String System.out.println("j是"+sNumber.length()+"位数"); //7 String s="Mary, F, 1976";
String[] sPlit=s.split(",");
for(int i=0;i<sPlit.length;i++)
System.out.println(sPlit(i)); // Mary
//F
//1976
}
}

 

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

public class TestStringCase {
public static void main(String[] args) {
String s = "ABAabb$&^$#BAAb898B#@%aa";
int cU = 0, cL = 0, cO = 0;
for(int i=0; i<s.length(); i++) {
char c = s.charAt(i); if(c >= 'A' && c <= 'Z') { //if(Character.isLowerCase(c))
cU ++;
} else if( c >= 'a' && c <='z') {   //if(Character.isUpperCase(c))  
cL ++;
} else {
cO ++;
}
} System.out.println("大写:" + cU);
System.out.println("小写:" + cL);
System.out.println("其他:" + cO);
}
}

 

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

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

StringBuffer类:

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

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

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

这样对内存是一种浪费.

String s1="hello";
String s2="world";
s1+=s2; // hello world

所以用StringBuffer类替代:

添加字符用append()方法:

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

public class TestStringCase {
public static void main(String[] args) {
String s = "Microsoft";
          char[] a={'a','b','c'};
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 }

  

  

  

基本数据类型包装类: 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

public class Test{
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");
}
}

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

public class ArrayParser
{
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 sSecond=sFirst[i].split(",");
d[i]=new double[sSecond.length];
for(int j=0;j<sSecond.length;j++){
d[i][j]=Double.parseDouble(sSecond[j]);
}
}
for(int i =0;i<d.length;i++){
for(int j=0;j<d[i].length;j++){
System.out.print(d[i][j]+" ");
}
System.out.println();
} }
}

  

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

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

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

静态属性: public static final String seperator

package bjsxt;
import java.io.*;
public class TestFile {
public static void main(String[] args) {
String separator = File.separator;
String filename = "myfile.txt";
String directory = "mydir1" + separator + "mydir2";
//String directory = "mydir1/mydir2";
//String directory = "mydir1\\mydir2"; //这种也可以, 但是放在linux下就出错了.
File f = new File(directory, filename);
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 ListFile {
public static void main(String[] args) {
File f = new File("d:\\test");
/*
File[] files = f.listFiles();
for(File ff : files) {
System.out.println(ff.getName());
}
*/
listChilds(f, 0);
} public static void listChilds(File f, int level) { String preStr = "";
for(int i=0; i<level; i++) { preStr += " "; } System.out.println(preStr + f.getName());
if(!f.isDirectory()) return;
File[] childs = f.listFiles();
for(int i=0; i<childs.length; i++) {
listChilds(childs[i], level + 1);
}
}
}

  

  

枚举类:java.lang.Enum

public class TestEnum{
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);
  }
}

 

 

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. PHP中字符串转换为数值 可能会遇到的坑

    今天看到一个老外最喜欢的一段代码 <?php $string = 'zero'; $zero = 0; echo ($string == $zero) ? 'Why? Just why?!' : ...

  2. bmp文件格式详细解析

    先区分几个概念:16色和16位色一样吗? 不一样! 颜色位数,即是用多少位字节表示的值,每一位可以表示0和1两值.通常图片的颜色深度,简称色深,就是用位数来表示的,所以,我通常会看到8位色,16位色, ...

  3. Linq List<String>

    List<string> _year = new List<string>() { "一月", "二月", "三月" ...

  4. Python 线程,进程

    Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元 线程不能实现多并发 只能实现伪并发 每次工作 只能是一个线程完成 由于python解释器 原生是c  原生线程 底层都会有一把 ...

  5. SLF4JLoggerContext cannot be cast to LoggerContext

    Getting Exception org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.l ...

  6. 为什么要 urlencode()

    1.是因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的2. 因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 ...

  7. ng-init小解

    ng-init可有多个表达式 ng-init= "a= 1;b= 2" 在这里头定义的变量会加入scope作用域 ng-init只能加入不必要的简单逻辑,输入alert() 定义数 ...

  8. div+css网页本地上和上传到服务器后在IE11上看到的效果不一样?

    div+css网页本地上和上传到服务器后在IE11上看到的效果不一样? 解决办法在html的head里加上一段:<meta http-equiv="X-UA-Compatible&qu ...

  9. bash和sh区别

    在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的POSIX标准模式(等效于bash的 --posix 参数),一般的,sh是bash的“子集”,不是子集的部分. ...

  10. mysql 修改 添加 删除 表字段

    添加表的字段    alter table 表名  add  字段名  字段的类型 例子:        alter table table1 add transactor varchar(10) n ...