JAVA SE学习day_01:API、文档注释规范、String字符串的常用API

一、JDK API

什么是 JDK API
JDk中包含了大量的API类库,所谓API(Aplication Programming Interface,应用程序编程接口)就是一些已经写好的、可供直接调用的功能(在Java语言中,这些功能以类的形式封装)。
JDK API包含的类库功能强大,经常使用的有:字符串操作、集合操作、文件操作、输入输出操作、网络操作、多线程等等。
JDK 包结构
为了便于使用和维护,JDK类库按照包结构划分,不同的功能划分在不同的包中;
经常使用的包:
在这里插入图片描述

二、文档注释

以/开始,以/结束;
加在类和方法的开头,用于说明作者,时间,版本,要实现功能的详细描述等信息;
通过Javadoc工具,可以轻松将此注释转换为HTML文档说明;学习者和程序员主要通过文档了解API的功能;
文档注释不同于普通的注释(// /
*/ ),其用于程序员进行代码维护和和交流;

package apidoc;
/**
 * 文档注释是功能性注释,只用在三个地方使用:类、方法、常量
 * 文档注释在类使用时,说明当前类的功能
 * @author 毛
 *@version 1.0
 *@see java.lang.String
 *@since JDK 8.0
 */
public class DocDemo {

	/**
	 * sayHello方法中的问候语
	 */
	public static final String INFO="你好!";
	
	/**
	 * 对给定用户添加问候语
	 * @param name 给定的用户名
	 * @return 含有问候语的字符串
	 */
	public String sayHello(String name){
		return "hay!"+name;
	}
}

三、String

3.1 String是不可变对象
java.lang.String使用了final修饰,不能被继承。
字符串底层封装了字符数组以及针对字符数组的操作算法;
字符串一旦创立,对象永远无法改变,但字符串引用可以重新赋值;
Java字符串中任何一个字符对应16位(两个字节)的定长Unicode编码。
3.2 String 常量池
Java为了提高性能,静态字符串(字面量/常量/常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符;
对应重复出现的字符串直接量,JVM会首先在常量池中查找,如果存在立刻返回该对象。

package string;
/**
 * String常量池,是JVM在堆中开辟的一块空间,用于缓存所有通过字面量
 * 形式创建的字符串对象,那么当我们在使用已缓存的字面量创建字符串对象时
 * 就会重用该对象,这样可以减少内存开销。
 * @author 毛
 *
 */
public class StringDemo {

	public static void main(String[] args) {

		String s1="123abc";
		String s2="123abc";//s2重用了s1创建的对象
		//s1和s2都是引用类型变量,保存的是对象地址,如果相同则说明指向同一对象
		System.out.println("s1==s2:"+(s1==s2));//true
		
		String s3 = "123abc";
		System.out.println("s2==s3"+(s2==s3));//ture
		//new 关键字创建时一定产生新的对象,Java不推荐这种形式创建字符串
		String s4=new String("123abc");
		System.out.println("s4:"+s4);
		//new出来的字符串不会重用对象
		System.out.println("s2==s4:"+(s2==s4));//false
		
		/*
		 * String 是不变对象,即:
		 * String对象创建后内容不变,若改变内容则一定创建新对象
		 */
		System.out.println("s1:"+s1);//123abc
		s1=s1+"!";//修改内容会创建新的对象
		System.out.println("s1:"+s1);//123abc!
		System.out.println("s2:"+s2);//123abc
		//s1已经不再与s2、s3指向同一个对象了
		System.out.println("s1==s2:"+(s1==s2));//false
		/*
		 * 触发了编译器的一个特性
		 * 编译器在编译期间,如果发现一个计算表达式可以在编译期间
		 * 判定结果时,就会进行计算,并将计算结果编译到class文件
		 * 编译后的class文件,下面的代码改为:
		 * String s5 = "123abc";
		 */
		String s5="123"+"abc";
		System.out.println("s5:"+s5);
		System.out.println("s5==s2:"+(s5==s2));//true
		
		String s="123";
		String s6=s+"abc";
		System.out.println("s6:"+s6);
		System.out.println("s6==s2:"+(s6==s2));//false
		
	}

}

3.3 内存编码以及长度
String在内存中采用Unicode编码,每个字符16位占用两个字节;任何一个字符(无论中文还是英文)都算1个char字符长度,占用两个字节

package string;
/**
 * int length()
 * 该方法可以返回当前字符串的长度(字符个数)
 * @author 毛
 *
 */
public class LengthDemo {

	public static void main(String[] args){
		String str = "I LOVE java";
		int length = str.length();
		System.out.println("len:"+length);
		
	}
}

3.4 indexOf方法
indexOf方法用于实现在字符串中索引另外一个字符串
String提供了几个重载的indexOf方法
在这里插入图片描述

package string;
/**int indexof(String str)
 * 检束给定的字符串在当前字符串中的位置,如果当前字符串不包含给定内容时
 * 返回值为-1,如包含时返回位置下标
 * @author 毛
 *
 */
public class IndexofDemo {

	public static void main(String[] args) {
//                  01234567 89 1234
		String str="thinking in java";//java编程思想
		
		int index = str.indexOf("in");
		System.out.println(index);//2(下标从零开始)
		index = str.indexOf("IN");
		System.out.println(index);//-1
		/*
		 * 重载方法,允许从指定位置开始检索
		 */
		index=str.indexOf("in",3);
		System.out.println(index);
		/*
		 * lastIndexOf方法可以检索最后一个出现的位置
		 */
		index=str.lastIndexOf("in");
		System.out.println(index);
	}

}

3.5 substring方法
substring方法用于返回一个字符串的子字符串。
substring通常重载方法定义如下:
在这里插入图片描述

package string;
/**
 * String substring(int start,int end)
 * 截取当前字符串中指定范围内的字符串
 * start是起始位置的下标,end是结束位置的下标(不包含该位置的字符)
 * 注释:
 * 通常在API中,用两个数字表示范围时,都是“含头不含尾”的;
 * @author 毛
 *
 */
public class SubstringDemo {

	public static void main(String[] args) {
//                    01234567891
		String str = "www.tefu.cn";
		//截取域名
		String sub = str.substring(4,8);
		System.out.println(sub);
		//重载的substring方法是从指定位置取到末尾
		 sub = str.substring(4);
		System.out.println(sub);
	}

}

3.6 trim 方法
去掉一个字符串的前导和后继空字符

package string;
/**
 * String trim()
 * 取出当前字符串两边的空白字符
 * @author 毛
 *
 */
public class TrimDemo {

	public static void main(String[] args) {
//左侧为三个空格,右侧为三个缩进字符tab
		String str = "   h e l l o				"	;
		System.out.println(str);
		String trim=str.trim();//将去除后的字符串返回
		System.out.println(trim);
		System.out.println(str);//源字符串不受影响
	}

}

3.7 charAt()方法
在这里插入图片描述

package string;
/**
 * char charAt(int index)
 * 获取当前字符串中指定位置上的字符
 * @author 毛
 *
 */
public class CharAtDemo {

	public static void main(String[] args) {
//                    0123456789012345
		String str = "thinking in java";
		//获取当前字符串中的第10个字符
		char c = str.charAt(5);
		char v = str.charAt(10);
		System.out.println(c+","+v);
		
		//遍历输出每一个字符
		for(int i = 0;i<str.length();i++){
			c=str.charAt(i);
			System.out.println(c);
		}
	}

}

3.8 startsWith和endsWith 方法
检测一个字符串是否以指定字符串开头或结尾

package string;
/**
 * boolean startsWith(String str)
 * boolean endsWith(String str)
 * 判断当前字符串是否是以给定的字符串开始或者结尾的
 * @author 毛
 *
 */
public class StartsWithDemo {

	public static void main(String[] args) {
		String str = "tinking in java";
		
		boolean starts = str.startsWith("thi");
		System.out.println("startsWith:"+starts);
		
		
		boolean ends = str.endsWith("va");
		boolean ends1 = str.endsWith("av");
		System.out.println("endsWith:"+ends+";"+"ends1With:"+ends1);

	}

}
练习
package string;
/**
 * 实现截取域名的方法
 * @author 毛
 *
 */
public class Text01 {

	public static void main(String[] args) {

		
		String name1=getHoseName("http://www.baidu.com");
		System.out.println("name1:"+name1);
		String name2=getHoseName("www.tedu.com");
		System.out.println("name2:"+name2);
		String name3=getHoseName("doc.canglaoshi.com.cn");
		System.out.println("name3:"+name3);
		
		
		/**
		 * 根据给定的网站,返回其中的域名
		 * @param location 例如:http://www.tedu.cn
		 * @return 返回的就是location中的域名“tedu”
		 */
	}

	public static String getHoseName(String location){
		int index = location.indexOf(".");
		int index1 = location.indexOf(".",index+1);
		String str = location.substring(index+1, index1);
		return str;
	}
}
package string;

public class Text02 {

	public static void main(String[] args) {

		/*
		 * 检查一个字符串是否为回文?
		 * 回文:正反读都是一句话
		 */
		String str = "上海自来水来自海上";
		
		for(int i=0;i<str.length()/2;i++){
			if(str.charAt(i)!=str.charAt(str.length()-1-i)){
				System.out.println("不");
				break ;
			}
			
		}
		System.out.println("是回文");
		//无法直接判断两数组相等
		//System.out.println(judge(str));
		
	}

	/*public static String judge(String sentence){
		char[]str1=new char[sentence.length()];
		char[]str2=new char[sentence.length()];
		for(int i = 0;i<sentence.length()/2;i++){
			char a =sentence.charAt(i);
			char b =sentence.charAt(sentence.length()-i-1);
			str1[i]=a;
			str2[i]=b;
		}
		System.out.println(str1);
		System.out.println(str2);
		if(str1==str2){
			return "是回文";
		}else{
			return "不是回文";
		}
	}*/
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 ................................................................................................................................................................................... 5  1.  通用注解、API、客户程序和实现模型 ................................................................................................................. 7  1.1. 简介 ........................................................................................................................................................................... 7  1.2. 实现的元数据 ........................................................................................................................................................... 7  1.2.1. 服务元数据 ............................................................................................................................................................ 8  1.2.2.@Reference ........................................................................................................................................................... 8  1.2.3. @Property ............................................................................................................................................................. 9  1.2.4. 实现作用域:@Scope、@Init、@Destroy ....................................................................................................... 9  1.3 接口元数据 .............................................................................................................................................................. 10  1.3.1. @Remotable ....................................................................................................................................................... 10  1.3.2. @Conversational ................................................................................................................................................ 11  1.4. 客户 API .................................................................................................................................................................. 11  1.4.1. SCA构件访问服务 .............................................................................................................................................. 11  1.4.2. 非 SCA构件的实现访问服务 ............................................................................................................................ 11  1.5. 错误处理 ................................................................................................................................................................. 12  1.6. 异步与会话编程 ..................................................................................................................................................... 12  1.6.1. @OneWay ........................................................................................................................................................... 12 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值