JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类
- 字符串相关类: 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类的更多相关文章
- 【Java】Java中常用的String方法
本文转载于:java中常用的String方法 1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.len ...
- [改善Java代码]正确使用String,StringBuffer,StringBuilder
CharSequence接口有三个实现类与字符串有关:String,StringBuffer,StringBuffer.虽然它们都与字符串有关,但是其处理机制是不同的. String类是不可改变的量, ...
- python基础--常用模块与面向对象基础
1常用模块 1.1 xml xml是实现不同语言或程序之间进行数据交换的协议 xml的格式如下: <?xml version="1.0"?> <data> ...
- 精解Mat类(一):基本数据类型-固定大小的 矩阵类(Matx) 向量类(Vector)
一.基础数据类型 1.(基础)固定大小矩阵类 matx 说明: ① 基础矩阵是我个人增加的描述,相对于Mat矩阵类(存储图像信息的大矩阵)而言. ② 固定大小矩阵类必须在编译期间就知晓其维 ...
- 【Java】常用数据类型转换(BigDecimal、包装类、日期等)
新工作转到大数据方向,每天都要面对数据类型互相转换的工作,再加上先前面试发现这部分的知识盲点, 决定复习之余自己再写一套便捷的方法,以后会比较方便.(虽然公司有现成封装的类,里头还有些遗漏的地方,暂时 ...
- Java基础-常用的String方法
先从String的new的方式 说起 这是面试题里面经常出现的 算是老套路之一 就是 比较下列两个的变化 两种实例化的区别 第一种String name1 = "好人";Strin ...
- java中常用的String方法
1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.length); 输出的结果是字符串长度10. 2 ...
- Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类
Math Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数. 与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同 ...
- Java的常用类 String
String类: 代表字符串, java程序中的所有字符串字面值(如, "abc")都是此类的实例实现 String是一个final类,代表不可变的字符序列 字符串是常量是用双引号 ...
随机推荐
- LeetCode OJ 141. Linked List Cycle
Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...
- wamp本地能访问,但局域网不能访问的解决办法
Apache的配置文件.
- asp.net无法触发asp控件的后台方法
前台代码: <asp:Button ID="btnFinish" runat="server" Text="完成" Font-Size ...
- 注意题目条件!!! 团问题 HDU 5952
题目大意:团的定义就是,团内的所有点,两两之间各有一条边,团的大小就是点的个数.现给你一个n个点,m条边的图.问,该图中有多少点的个数为s的团. (题目保证每个点的度数不超过20,n<=100, ...
- 二分三角形的时候尤其需要注意!!! HDU 5115 二分+模拟
题目大意:http://blog.csdn.net/snowy_smile/article/details/49535301 思路:分类讨论,分别在[1,2].(2,3).[3,4).[4,1]相遇, ...
- Unable to open connection to supplicant on "/data/misc/wifi/sockets/wlan0"
在调试android wifi UI 的时候,出现了 logcat: Unable to open connection to supplicant on "/data/misc/wifi ...
- 格式化格林威治时间(Wed Aug 01 00:00:00 CST 2012)
1.如果格林威治时间时间是date类型.(这种格式最简单) SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd") ...
- Node.js学习 - Install and Configure
平台:Windows 官网:https://nodejs.org/en/ 下载安装 CMD中运行 1 交互模式 2 命令模式 模块安装 - NPM npm install express #当前目录安 ...
- 用phpstudy搭建dedecms网站验证码出不来解决方案
验证码图片不显示,这应该是很多站长朋友们最长遇到的一个问题,本地测试明明好好的,为什么传上空间或者服务器上验证码就无法显示了呢,春哥分析这可能是由于没有加载gd库扩展所引起的,那么怎么解决呢?由于引起 ...
- PHP 常识
PHP常识 1.谈谈你对MVC的认识,介绍几种目前比较流行的框架 由Model(M),View(V),Cntroller(C) 组成的一种设计模式,Model 主要处理一些业务处理类,View是页面显 ...