Java学习lesson 11

String类中的其他功能:

替换功能:

* public String replace(char oldChar,char newChar):将字符串中某一个字符用新的字符替换

* public String replace(String oldStr,String newStr):将字符串中某一个子字符串用新 的字符                                     串去替代

* public String trim():去除字符串两端空格:

* public int compareTo(String anotherString)  是Comparable接口中的方法(该接口可以实现一                                  个自然排序)

* Comparator接口可以比较器排序

package string;

public class StringDemo1 {
	public static void main(String[] args){
		//定义字符串
		String str="helloword";
		System.out.println(str);

		//将原字符串中的字符“l”用“k”替换,
		String str1=str.replace("l", "k");
		System.out.println(str1);

		//将原字符串中的字符串“hello”用“hi——”替换
		String str2=str.replace("hello", "hi——");
		System.out.println(str2);
		System.out.println("----------------");

		String str3="  helloword  ";
		System.out.println(str3);

		//返回字符串的副本,忽略前导空白和尾部空白
		String str4=str3.trim();
		System.out.println(str4);
		System.out.println("----------------");

		String str5 ="helloword" ;
		String str6="abc";
		System.out.println("compareTo():"+str5.compareTo(str));
		System.out.println("compareTo():"+str6.compareTo(str));

	}

}

* int indexOf(String str):返回指定字符串在此字符串中的一次出现的索引

* int indexOf(Stirng  str,int fromIndex):返回次字符串中第一次出现指定字符串出的索引,从                              指定索引开始

* String substring(int start):从指定位置开始截字符串,默认到最末尾

* String substring(int start,int end):从指定位置开始截取到指定位置结束

package string;

import java.util.Scanner;

public class StringDemo5 {
	public static void main(String[] args){
		String str="java";
		Scanner sc=new Scanner(System.in);
		System.out.println("请你输入一个字符串:");
		String str1=sc.nextLine();
		System.out.println("你输入的字符串是:"+str1);
		System.out.println("----------------");

		//从头开始返回java第一次出现的首地址
		System.out.println("str1.indexOf(str):"+str1.indexOf(str));//ugfuyjavaojgojjavagfdug
		//从指定索引开始
		System.out.println("str1.indexOf(str,7 ):"+str1.indexOf(str,7 ));
		System.out.println("-------------------");

		//从指定位置截取字符串,默认到末尾结束
		System.out.println("str1.substring(3):"+str1.substring(3));
		//从指定位置截取字符串,到指定位置结束
		System.out.println("str1.substring(3,7):"+str1.substring(3,7));

	}

}

* StringBuffer类

线程安全的可变字符序列,类似于String的字符串缓冲区

*开发中线程不安全的话,可能会出现死锁的现象!线程安全和执行效率是相对的

* 面试题

*StringBuffer与String的区别?

*StringBuffer会构造一个字符串缓冲区,从内存角度考虑使用StringBuffer比较多

String是一个普通的字符串类,从内存角度耗费空间!

在单线程程序中使用StringBulider(线程不安全)代替StringBuffer

*StringBuffer中的常用方法

* 构造方法:

*public StringBuffer(){ }

构造一个不带字符的字符串缓冲区,该字符串缓冲区的初始容量为16个字符

*public StringBuffer(int capacity)

构造一个不带字符,但具有指定初始容量的字符串缓冲区

*public StringBuffer(String str)

构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初               始容量为 16 加上字符串参数的长度。

* public int length();获取字符串长度

* public int capacity():获取当前字符串缓冲区的容量

*StringBuffer的添加方法:

* public StringBuffer append( );向缓冲区追加数据,返回字符串缓冲区本身

* public StringBUffer insert(int offset,String str):在指定位置添加一个               字符串,返回字符串缓冲区本身

*StringBuffer的删除方法:

* public StringBuffer deleteCharAt(int start):删除指定位置的字符,返回                                             字符串缓冲区本身

* public StringBuffer deleteCharAt(int start,int end):删除从指定位置开                                            始到指定位置结束的字符返回                                            字符串缓冲区本身

package stringbuffer;

public class StringBufferDemo {
	public static void main(String[] args ){
		//StringBuffer不可以像String一样直接赋值,可以创建对象利用构造方法赋值
		//也可以通过无参构造,调用append();方法进行添加
		StringBuffer sb=new StringBuffer();
		sb.append("hello");
		sb.append("world");
		sb.append("-----javase");
		System.out.println("添加初始的字符串:"+sb);
		sb.insert(5, "-----");
		System.out.println("用insert()添加:"+sb);
		System.out.println("----------------");

		sb.deleteCharAt(3);
		System.out.println("删除一个字符后的字符串:"+sb);
		System.out.println("----------------");

		//当前索引所对应的字符一发生了改变
		sb.delete(1, 3);
		System.out.println("删除一个小字符串后:"+sb);
		System.out.println("----------------");
	}

}

*StringBuffer和String之间的转换

*StringBuffer的反转功能:

public StringBuffer reserve();将字符串顺序直接翻转

package stringbuffer;

public class StringBufferDemo1 {
	public static void main(String[] args) {
	    String str="hello";
	    //String----->StringBuffer的转换
	    System.out.println("String----->StringBuffer的转换");
	    //创建StringBuffer的对象指向这个字符串
	    StringBuffer sb=new StringBuffer(str);
	    System.out.println("创建StringBuffer的对象指向这个字符串:"+sb);
	    
	    //使用无参构造,调用append()方法
	    StringBuffer sb1=new StringBuffer();
	    sb1.append(str);
	    System.out.println("使用无参构造,调用append()方法:"+sb1);
	    System.out.println("----------------");
	    
	    //StringBuffer----->String的转换
	    System.out.println("StringBuffer----->String的转换");
	    //创建缓冲区对象
	    StringBuffer sb2=new StringBuffer("world");
	    //String有一种构造方法String(StringBuffer str)
	    String sb3=new String(sb2);
	    System.out.println("构造方法String(StringBuffer str):"+sb3);
	    //toString()方法
	    String sb4=sb2.toString();
	    System.out.println("toString()方法:"+sb4);
	    System.out.println("----------------");
	    
	    //使用StringBuffer的翻转功能将字符串反转“reverse()”
	    System.out.println("String类型“hello”使用reverse()翻转后:"+sb2.reverse().toString());
	    
	    
	}

}

*StringBufferd的替换功能:

*public StringBuffer replace(int start,int end,String str):从指定位置开始到指定位                                              置用str替换

*StringBuffer的截取功能:

*public StringBuffer substring(int start):从指定位置开始到末尾结束,返回一个新的字                                   符串

*public StringBuffer substring(int start,int end):从指定位置开始到指定位置结束,返                                       回一个新的字符串

package stringbuffer;

public class StringBufferDemo2 {
	public static void main(String[] args){
		StringBuffer sb=new StringBuffer();
		sb.append("helloworld");
		System.out.println("初始字符串:"+sb);
		System.out.println("替换后:"+sb.replace(0, 5, "hi-"));
		System.out.println("------------------");

		//StringBuffer的截取功能
		//从指定位置开始截取,默认到结尾结束
		System.out.println("从的指定位置往后截取:"+sb.substring(5));
	    System.out.println("从指定位置开始到指定位置结束:"+sb.substring(3, 6));
	}

}

问题:

*String、StringBuffer、StringBuleder的区别

String: 一个不可变的字符序列

StringBuffer和StringBuleder是可变字符序列,在单线程时优先采用StirngBuleder

*从线程角度考虑:StringBuleder线程不安全,不同步,执行效率高,比StringBuffer快

*String和StringBuffer作为形式参数和基本类型是一样的

*Integer类

jdk5.0之后的新特性:自动拆装箱,可变参数……

每个基本数据类型都会被封装成一个引用类型

基本类型              引用类型

int                 Integer

char                Character

byte                Byte

long                Long

double               Double

short                Short

float                Float

boolean              Blooean

Integer类的构造方式:

public Integer(int value):将一个int类型的数据封装成一个引用类型

public Integer(String s):将一个字符数类型封装成一个Integer类型

该字符串必须是数字字符串否则运行出错:java.lang.NumberFormatException

package integer;

public class IntegerDemo {

	public static void main(String[] args) {
		//public static String toBinaryString(int i)
		//以二进制无符号数形式返回一个整数参数的字符串表示形式
		System.out.println(Integer.toBinaryString(100)) ;

		//public static String toOctalString(int i)
		//以八进制无符号数形式返回一个整数参数的字符串表示形式
		System.out.println(Integer.toOctalString(100));

		//public static String toHexString(int i)
		//以十六进制无符号数形式返回一个整数参数的字符串表示形式
		System.out.println(Integer.toHexString(100));

		//public static final int MAX_VALUE
		//int类型能够表示的最大值
		//public static final int MIN_VALUE
		//int类型所能表示的最小值
		System.out.println(Integer.MAX_VALUE);//2147483647
		System.out.println(Integer.MIN_VALUE);//-2147483647
	}
}

*int类型和String类型的转换

*public int intValue();//以int类型返回该Integer的值

*public static int parseInt(String str);//将字符串参数作为有符号数的十进制整数进行                                 解析

*Character类

*在对象中包装一个基本类型char的值,Character类型的对象包含类型为char的字段

*构造方法:

public Character(char value)://构造一个新分配的Character对象,来表示制定的                                char的值

*Character的判断功能和转换功能

public static boolean isLowerCase(char ch)确定指定字符是否为小写字母。

*public static boolenn isUpperCase(char ch)确定指定字符是否为大写字母

*public static boolean isDigit(char ch)确定指定字符是否为数字。

*public static char toUpperCase(char ch):将指定字符转换成大写

*public static char toLowerCase(char ch):将指定字符转换成小写

package character;

public class CharacterDemo {
    public static void main(String[] args) {

		//public static boolean isLowerCase(char ch)确定指定字符是否为小写字母
		System.out.println("isLowerCase:"+Character.isLowerCase(‘a‘));
		System.out.println("isLowerCase:"+Character.isLowerCase(‘A‘));
		System.out.println("isLowerCase:"+Character.isLowerCase(‘0‘));
		System.out.println("---------------------------------------");
		//public static boolenn isUpperCase(char ch)确定指定字符是否为大写字母
		System.out.println("isUpperCase:"+Character.isUpperCase(‘a‘));
		System.out.println("isUpperCase:"+Character.isUpperCase(‘A‘));
		System.out.println("isUpperCase:"+Character.isUpperCase(‘0‘));
		System.out.println("---------------------------------------");
		//public static boolean isDigit(char ch)确定指定字符是否为数字。
		System.out.println("isDigit:"+Character.isDigit(‘a‘));
		System.out.println("isDigit:"+Character.isDigit(‘A‘));
		System.out.println("isDigit:"+Character.isDigit(‘0‘));
	}

}

时间: 2024-11-05 22:50:04

Java学习lesson 11的相关文章

Java学习日记-11 集合(1)

Collection接口集合中存储的只是对象的引用,不是对象本身. 1.ArrayList<E>类1.1ArrayList和Collection的关系 public interface List<E>extends Collection<E> public class ArrayList<E> implements List<E> 1.2构造方法 ArrayList() 构造一个初始容量为 10 的空列表. ArrayList(Collectio

Java学习笔记 11/15:一个简单的JAVA例子

首先来看一个简单的 Java 程序. 来看下面这个程序,试试看是否看得出它是在做哪些事情! 范例:TestJava.java // TestJava.java,java 的简单范例 public class TestJava { public static void main(String args[]) { int num ; // 声明一个整型变量 num num = 3 ; // 将整型变量赋值为 3 // 输出字符串,这里用"+" 号连接变量 System.out.printl

Java学习lesson 02

常量 什么是常量 * 在程序执行的过程中其值不可以发生改变  Java中常量的分类 * 字面值常量 * 字符串常量                          * 整数常量                     * 小数常量                     * 字符常量                     * 布尔常量                     * 空常量            null(数组部分讲解) * 自定义常量 eclipse实现 class Demo1

Java学习lesson 12

*数组的高级排序 *冒泡排序 两个两个比较,大的往后 *选择排序 从0索引开始,用它对应的元素一次和后面遏制进行比小的往前放,第一次比较完毕,最小值出现在了最小索引处, *1)用0索引对应的元素依次和后面的索引对应的元素进行比较 比length.arr-1次 *二分查找;二分搜索法 *前提条件:数组必须是有序的(一个排好序的数组) *思想:猜想中间的索引,这要可以将数组减半 *步骤: 1)定义最小索引,最大索引 2)计算中间索引 3)拿中间索引的元素和要查找的索引进行比较 相等:直接返回中间索引

Java学习心得11

学习情况:一般. 心得:无. 感受: 终于开始学CUI了. 图形用户面用起来是比命令好多了,但是底部的功夫也比命令界面要求高很多. 以前在命令界面只需考虑"对话"的内容和流程,现在还要多考虑"对话"的"地点"."忌宜". 为了我的时间着想,获取我应该多准备几个模板程序,随时复制粘贴. 问题: 程序是在虚拟机上运行的,如果电脑上没有Java虚拟机,程序该如何运行?

java 学习第11课,android 实现拨打电话的功能

1. 先布局界面,界面采用线性垂直方式来布局 在layout 界面文件中 activity_main.xml 中 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation=&

Java学习笔记11

Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看在源码中registerNatives()方法: private static native void registerNatives(); static { registerNatives(); } 从上面的代码中看到Object类定义了一个静态初始化块,我们知道当创建Java对象时,系统总是先调用静态初始化块

Java 学习计划 11月28日-12月1日

File类基本操作 在Linux中,一切皆文件,所以文件操作是基础. Java中提供File类来提供一些对文件的基本操作,面对一个新类,第一件事就是去看API文档 File类的API文档中对于文件的路径进行了说明 Linux或Unix下用'/' windows下用‘\': 在API的最后一行,有一句说明, Instances of the File class are immutable; that is, once created, the abstract pathname represen

java学习笔记(11) —— Struts2与Spring的整合

1.右键 项目名称 —— MyEclipse —— Add Spring Capabilities 2.选取 Copy checked Library contents to project folder 3.建立IService 与 Service [Spring 同样是面向接口编程,因此需要引入IService] public interface ILoginService { public boolean isLogin(String username,String password);