`
foxinmy
  • 浏览: 6173 次
  • 性别: Icon_minigender_1
  • 来自: 湘
社区版块
存档分类
最新评论

J2SE基础/字符串相关

阅读更多

 

/**
	 * 反转字符串
	 * eg:"abc" => "cba"
	 * @param str
	 */
	static void reverseString(String str) {
		// 目标字符串转换为字符数组
		char[] charArray = str.toCharArray();
		// 获取转换后的字符数组长度
		int charLength = charArray.length;
		char char_temp;// 临时字符变量
		// 反转后的字符串
		String newStr;
		// 循环反转字符
		for (int i = 0; i < charLength / 2; i++) {
			// 将索引[i]元素的值赋值临时字符
			char_temp = charArray[i];
			// 索引[charLength - 1 - i]元素的值赋值索引[i]
			charArray[i] = charArray[charLength - 1 - i];
			// 临时字符赋值索引[charLength - 1 - i]元素
			charArray[charLength - 1 - i] = char_temp;
		}
		// 获取反转后的字符串
		newStr = String.valueOf(charArray);
		// CSharp:newStr = new string(charArray);
		// js:newStr = str.split("").reverse().join("");
		System.out.println(newStr);
	}

	static void reverseString2(String str) {
		int length = str.length();
		StringBuilder sb = new StringBuilder(length);
		length--;
		for (int i = length; i >= 0; i--) {
			sb.append(str.charAt(i));
		}
		System.out.println(sb.toString());
	}
/**
	 * 两字符串求最长公共字符串
	 * 
	 * @param a
	 * @param b
	 */
	static void compareString(String a, String b) {
		int beginIndex = 0;
		int endIndex = 0;
		int maxLength = 0;
		String shortString = null;
		String longString = null;
		if (a.length() > b.length()) {
			shortString = b;
			longString = a;
		} else {
			shortString = a;
			longString = b;
		}
		String splitString = null;
		for (int i = 0; i <= shortString.length(); i++) {
			for (int j = i + 1; j <= shortString.length(); j++) {
				splitString = shortString.substring(i, j);
				if (longString.indexOf(splitString) > -1) {
					if (splitString.length() > maxLength) {
						maxLength = splitString.length();
						beginIndex = i;
						endIndex = j;
					}
				}
			}
		}
		System.out.println(String.format("The MaxLength:%d", maxLength));
		System.out.println(String.format("The BeginIndex:%d", beginIndex));
		System.out.println(String.format("The EndIndex:%d", endIndex));
		System.out.println(String.format("The MaxString:%s",
				a.substring(beginIndex, endIndex)));
	}

	/*
	 * 判断回文数
	 */
	static void isPalindrome(String str) {
		boolean sign = true;
		int length = str.length();
		int start = 0;
		int end = 0;
		if (length == 1)
			sign = false;
		for (int i = 0; i < length / 2; i++) {
			start = str.charAt(i);
			end = str.charAt(length - i - 1);
			if ((start ^ end) != 0)
				sign = false;
			// return
		}
		System.out.println(String.format("isPalindrome: %s", sign));
	}

	/*
	 * 判断某一字符串是否与另一字符串相同
	 */
	static void isAnagrams(String a, String b) {
		int aLength = a.length();
		int bLength = b.length();
		int aChar = 0;
		int bChar = 0;
		boolean sign = true;
		int result = 0;
		if (aLength != bLength)
			sign = false;
		// return
		for (int i = 0; i < aLength; i++) {
			aChar = a.charAt(i);
			bChar = b.charAt(i);
			result ^= aChar ^ bChar;
		}
		sign = result == 0;
		System.out.println(String.format("isAnagrams: %s", sign));
	}

	/*
	 * 截取中英文混合的字符串
	 */
	static void subString(String str, int maxLen) {
		int len = 0;
		char cha = '0';
		StringBuilder sb = new StringBuilder(maxLen);
		if (str == null || str.isEmpty())
			return;
		try {
			for (int i = 0; i < str.length(); i++) {
				cha = str.charAt(i);
				len += String.valueOf(cha).getBytes("GBK").length;
				if (len > maxLen)
					break;
				sb.append(cha);
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		System.out.println(sb.toString());
	}

	/*
	 * 汉字九九乘法表
	 */
	static void multiplicationTable() {
		char[] chars = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十' };
		int result = 0;
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {
				result = i * j;
				if (String.valueOf(result).length() == 1) {
					System.out.print(String.format("  %s×%s=%s  ", chars[i],
							chars[j], chars[result]));
				} else {
					if (result % 10 == 0) {
						System.out.print(String.format("  %s×%s=%s%s  ",
								chars[i], chars[j], chars[(result / 10)],
								chars[10]));
					} else {
						System.out.print(String.format("  %s×%s=%s%s%s  ",
								chars[i], chars[j], chars[(result / 10)],
								chars[10], chars[(result % 10)]));
					}
				}
			}
			System.out.println();
		}
	}

	/*
	 * 模拟手算加法实现大数字计算
	 */
	static String addString(String a, String b) {
		// 判断是否为null
		if (a == null || b == null)
			return null;
		String _a = a.trim();
		String _b = b.trim();
		// 判断是否为空
		if (_a.isEmpty() && _b.isEmpty())
			return null;
		// 判断是否为0
		if (_a.equals("0"))
			return _b;
		if (_b.equals("0"))
			return _a;
		// 判断是否为数字
		if (!(StringUtils.isNumber(a) && StringUtils.isNumber(b)))
			return null;
		// 不足位补零
		if (_a.length() > _b.length()) {
			String temp = _a;
			_a = _b;
			_b = temp;
		}
		_a = StringUtils.addZeroToFirst(_a, _b.length());
		// 定义返回值变量
		StringBuilder result = new StringBuilder(_a.length());
		// 循环模拟进位相加
		int sum = 0;
		int temp = 0;
		int num1 = 0;
		int num2 = 0;
		for (int i = _a.length() - 1; i >= 0; i--) {
			num1 = _a.charAt(i) - '0';
			num2 = _b.charAt(i) - '0';
			sum = num1 + num2 + temp;
			result.append(sum % 10);
			temp = sum / 10;
		}
		// 反转字符串
		result.reverse();
		// 判断最高位相加的和
		if (temp != 0)
			result.insert(0, temp);
		return result.toString();
	}
分享到:
评论

相关推荐

    J2SE基础源代码

    2. **类库**:J2SE提供了一系列丰富的类库,如`java.lang`、`java.util`、`java.io`等,它们涵盖了字符串处理、集合框架、输入/输出操作等方面。通过源代码,我们可以学习如何有效地利用这些类库来解决问题。 3. **...

    j2se基础课程资源

    本资源包是一套全面的J2SE(Java Standard Edition)基础教程,适合初学者深入学习Java编程。它包含了从基本语法到高级特性的多个主题,帮助初学者逐步掌握Java编程的核心知识。 1. **第二章 Java语法基础**:这...

    J2SE基础全套资料

    《J2SE基础全套资料》是一份全面涵盖Java标准版(J2SE)基础知识的资源集合,适合初学者和有经验的开发者进行深入学习。这份资料包括了集合、线程、网络、图形用户界面(GUI)、数组、字符串等多个关键主题,旨在...

    java基础j2se入门PPT

    在Java编程语言中,字符串是非常基础且重要的概念。`String`类是Java的标准库中用于处理和创建字符串的类,它专门设计用于处理Unicode字符序列。字符串在Java中被视为不可变对象,这意味着一旦创建了一个`String`...

    J2SE基础复习提纲

    例如,`List&lt;String&gt;`表示一个存储字符串的列表。 以上就是J2SE基础复习的主要知识点概述。通过深入理解这些概念,可以更好地掌握Java语言的核心要素,并为进一步学习更高级的主题打下坚实的基础。

    Java复习有所有j2se的基础知识总结

    本篇文章将深入探讨Java复习中关于J2SE的基础知识,特别是字符串处理相关的概念。 字符串在Java中扮演着至关重要的角色。Java提供了三种主要的字符串类:String、StringBuffer和StringBuilder。理解它们之间的区别...

    java j2se基础知识总结

    Java J2SE基础知识是Java开发的核心,涵盖了类定义、函数、对象创建、关键字、异常处理、导入语句、包管理、接口以及数组等多个方面。以下是对这些知识点的详细阐述: 1. 类定义:在Java中,类是面向对象编程的基本...

    j2se7官方API

    在J2SE 7中,switch语句开始支持字符串作为表达式,这在处理枚举类型或常量时非常有用。 七、二进制字面量与下划线分隔符 1. 二进制字面量:可以用`0b`或`0B`前缀表示二进制数字,如`int num = 0b1010;` 2. ...

    关于JAVA面试题、J2SE基础

    为了在Java开发者岗位上取得成功,掌握扎实的J2SE(Java Standard Edition)基础知识至关重要。本资料集合了多个来源的Java面试题,涵盖了广泛的知识点,旨在帮助求职者充分准备面试。 一、Java基础 1. 类与对象:...

    JAVA基础知识点,J2SE部分内容

    字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串(比如对图片文件的操作就只能用字节流) 3-5.一个字符可以是1个字节,也可以是2个或多个字节 一个字节就是8个位,也就是对同一数据源...

    java基础课程j2se

    5. **字符串处理**:Java中的String类是不可变的,了解其常用方法,如substring、concat、indexOf等,以及StringBuilder和StringBuffer用于动态构建字符串。 6. **输入/输出流**:学习I/O流的概念,包括文件读写、...

    J2SE面试题总汇

    - **StringBuilder 和 StringBuffer**:可变字符串,适合在循环中进行字符串操作。 十二、流: - **I/O 流**:用于读写数据,分为字节流和字符流,有输入流和输出流之分。 - **缓冲流**:提高读写效率,如 ...

    j2sej2sej2sej2se

    在描述中,由于连续重复的"j2se"字符串,没有提供具体的信息,所以我将从一般的角度来详细解释J2SE的相关知识点。 1. **Java虚拟机(JVM)**:J2SE的核心是Java虚拟机,它是Java程序的执行引擎。JVM负责解析.class...

    j2se api 中文版

    1. **基础类库**:Java的基础类库包括集合框架(如ArrayList, HashMap等)、I/O流、网络编程、多线程、日期和时间处理以及字符串操作等。这些类库为开发者提供了强大的功能,使他们能够轻松地实现常见的编程任务。 ...

    j2se doc 中文版

    这些类库提供了基础数据类型、字符串处理、输入/输出、网络通信、集合框架等功能。API 文档对于开发者来说是必不可少的,因为它们列出了每个类、接口、方法和构造函数的详细说明,包括参数、返回值、异常和示例代码...

    J2SE复习源代码

    `String`类处理文本字符串,具有不可变性;`ArrayList`是动态数组,允许在任意位置插入和删除元素;`HashMap`则实现了键值对的存储,提供快速查找功能。理解这些类的使用方式和特性对于日常编程至关重要。 2. **...

    Java基础学习教程J2SE资料学习代码实例

    - 尽管没有明确的`String`相关的文件,但在Java中,字符串处理是极其常见的,可能会在各个示例中都有所涉及,如字符串的创建、连接、比较、查找、替换等操作。 9. **测试与度量**: - `TestMetrics.java`可能是...

    J2SE_5.0_第06章_常用类1.rar

    《J2SE 5.0 第06章:常用类1》主要涵盖了Java标准版5.0中的核心类库,特别是对字符串(String)类的深入探讨。这一章的学习旨在帮助开发者掌握Java中字符串处理的基本技巧和高级特性,提高代码效率和可读性。 在Java...

    j2se基础面试

    Java基础是所有Java开发者必备的知识体系,J2SE(Java 2 Platform, Standard Edition)是Java的核心部分,包含了用于开发和部署桌面应用的基本工具和API。以下是对J2SE面试中常见知识点的详细阐述: 一、基本规则:...

Global site tag (gtag.js) - Google Analytics