`
hesihua
  • 浏览: 233644 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

java基础总结1

    博客分类:
  • java
 
阅读更多

1、在进行字符串逆转时可以采用StringBuffer对象的reverse方法调用。

2、String对象s转化为StringBuffer对象sb的申明:

   StringBuffer sb = new StringBuffer(s);

3、java语言获取键盘输入的数据

    Scanner scan = new Scanner(System.in);
        int number = scan.next();

4、java中判断某个字符串是否含有某个子串可以采用:

(1)、s.indexOf(str)!= -1;

(2)、s.contains(str) == true;

另外还可以采用方法

matches、regionMatches、

5、Eclipse代码自动对齐快捷键ctrl+shift+f。

6、往StringBuffer对象的最开始插入数据采用 s.insert(0,c)。

7、String类的substring()方法总结

     substring(int i)---该函数返回字符串从第i个位置到结尾的字符串

 8、正则表达式"\\s+"是将一个字符串以空格(空格可以有1个到多个)分隔

9、进行求解首次出现次数最多的字符时如下代码很值得推荐:

	public static String MostNumber(String s){
		String maxStr = null;
		int maxLen = 0;
		String first;
		
		while(s.length() > 0){
			int length = s.length();
			first = s.substring(0, 1);
			s = s.replaceAll(first, "");
			if(maxLen < length - s.length()){
				maxLen = length - s.length();
				maxStr = first;
			}
		}		
		return maxStr +"," + maxLen;
	}

10、Collections.sort(List) 方法将list中的对象按照从小到大的顺序进行排序

11、list的add()方法是添加数据,remove()方法进行删除数据。

 12、java实现将一个数字进行逆转的方法:

       

while(number >= 1){
    System.out.println(number % 10);
    number = number / 10;
}

 13、判断一个字符串中是否全部是小写字母:

	private static boolean whetherLowerCase(String str){
		boolean b = true;
		for(int i = 0 ; i < str.length() ; i++){
			if(str.charAt(i) < 'a' || str.charAt(i) > 'z'){
				b = false;
				break;
			}			
		}		
		return b;
	}

 14、以前写一串数字是否是回文时。我还经常去判断这串数字的长度是奇数还是偶数,现在终于做出来了。只需要两个下标,第一个下标i从第一个数开始往后走,第二个下标j从最后一个数往前走,直到i == j的时候截止。如果中间每次比较的两个数都相等,则这串数字是回文,否则不是。

15、for循环的第二个语句的值是一个boolean类型。

16、字符和字符串的大小写转换。如下是小写转换为大写:

如果是String类的,用toUpperCase()方法就OK: str=str.toUpperCase;
如果是char,也简单:   c=(char)(c-32);

如下是要将大写转换为小写:

如果是String类的,用toUpperCase()方法就OK: str=str.toLowerCase;
如果是char,也简单:   c=(char)(c+32);

17、判断一个数是否为素数,只用循环从2到 该数的平方根 就可以了。

18、判断一个字符是大写字母还是小写字母,还是数字。例如

char c;

Character.isLowerCase(c);

Character.isUpperCase(c);

Character.isDigit(c);

19、正则表达式:

String str ;

str = str.replaceAll("\\D", ",");  //将str中的所有非数字以逗号分隔

20、按顺序打印Map对象中的数据:

for(Map.Entry<String , Integer> entry : charMap.entrySet()){

    System.out.println(entry.getKey() + "," + entry.getValue());

}

21、获取Map对象中的第一个数据:

Iterator it = charMap.entrySet().iterator();

Map.Entry entry = (Map.Entry)it.next();

22、判断一个数是否是2的N次方:

if(num == 1 ||  (num &(num -1)) == 0){

    return true;

}

else{

    return false;

}

23、判断一个字符串中的左右括号是否匹配:

Stack类中的empty函数:

如果栈为空就返回true,否则返回false。

	private static boolean checkBracket(String str){
		Stack<Character> s = new Stack<Character>();
		for(int i = 0 ; i < str.length() ; i++){
			if(str.charAt(i) == '('){
				s.push(str.charAt(i));
			}
			else if(str.charAt(i) == ')' && s.size() > 0){
				s.pop();
			}
		}
		return s.empty();
	}

 24、像要将拼音转换为数字的题目,一般都会用到HashMap。

25、统计一行字符串中每个字符或者单词出现的次数,可以采用的方法有如下两种:

第一种方式:

int len;
		while(string.length() > 0){
			first = string.substring(0, 1);
			len = string.length();
			string = string.replaceAll(first, "");
			charMap.put(first, len - string.length());
		}

 针对replaceAll(String regex, String str2)方法而言,第一个参数是一个正则表达式。正则表达式中有很多特殊字符,比如'?' , '.', '+',等等这样的字符,如果是真的需要替换这样的字符的话需要用到转义,也就是在第一个参数表达式中要这样写"\\?", "\\.", "\\+"。

第二种方式:

	StringTokenizer st = new StringTokenizer(str,",. ");
		Map<String,Integer> map = new HashMap<String, Integer>();
		while (st.hasMoreTokens()) {
           String letter = st.nextToken();
           int count;
           if (map.get(letter) == null) {
                  count = 1;
              } else {
                  count = map.get(letter).intValue() + 1;
              }
              map.put(letter,count);
          }

 26、buffer输入

String str=null;   
	    BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); 	   
	    try {
	        str = buf.readLine();
	    } catch (IOException e1) {	 
	        e1.printStackTrace();
	    }

 27、StringTokenizer类:

StringTokenizer st = new StringTokenizer(str,",. ");//string tokenizer 类允许应用程序将字符串分解为标记
while (st.hasMoreTokens()) {  // 测试此 tokenizer 的字符串中是否还有更多的可用标记
    String letter = st.nextToken(); //返回此 string tokenizer 的下一个标记
}

 28、求两个字符串的最长公共(LCS)子串:

总算大概明白了求两个字符串的最长子串的算法:

如下的算法思想如下:

当字符匹配的时候,不是简单的给相应元素赋上1,而是赋上其左上角元素的值加一。

我们用两个标记变量来标记矩阵中值最大的元素的位置,在矩阵生成的过程中来判断

当前生成的元素的值是不是最大的,据此来改变标记变量的值,那么到矩阵完成的时

候,最长匹配子串的位置和长度就已经出来了。

 

public class Test {
	public static void main(String[] args) {  
        char[] left = "li lei".toCharArray();  
        char[] right = "li li".toCharArray();  
        char [] result = delLGS(left, right);  
        String strResult="";  
        for(int index = 0;index<result.length;index++){  
            strResult = strResult+ result[index]+"";  
        }  
        System.out.println(strResult);  
        
        String s = "asdfjasldfjas";
        System.out.println(s.contains("sdfj"));
    }  
  
    public static char[] delLGS(char[] left, char[] right) {  
        int lenLeft = left.length;  
        int lenRight = right.length;  
        int c[][] = new int[lenLeft][lenRight];  
        char[] p;  
        int start, end, len, i, j = 0;  
  
        end = len = 0;  
  
        for (i = 0; i < lenLeft; i++) {  
            for (j = lenRight - 1; j >= 0; j--) {  
                if (left[i] == right[j])// 元素相等时  
                {  
                    if (i == 0 || j == 0)  
                        c[i][j] = 1;  
                    else {  
                        c[i][j] = c[i - 1][j - 1] + 1;  
                    }  
                } else  
                    c[i][j] = 0;  
  
                if (c[i][j] > len) {  
                    len = c[i][j];  
                    end = j;  
                }  
            }  
        }  
  
        start = end - len + 1;  
        p = new char[len];  
        for (i = start; i <= end; i++)  
        {  
            p[i - start] = right[i];  
        }         
        return p;  
    } 
}

 29、Arrays.sort(ch[])方法对数组ch中的字符按照ASCII码值进行从小到大进行排序。

30、去掉一个字符串中所有重复的字符

 String str = "abcdeabcdeabcdeaaaaaadddddceeeeabcccccccacadaeec";
        str = str.replaceAll("(?s)(.)(?=.*\\1)", "");
        System.out.println(str);

 对上面的语句进行解析:

(?s)   开启单行模式 DOTALL  让. 号匹配任意字符
(.) 任意字符  并捕获在第一组
(?=.*\1)  这是断言, 表示后面内容将是 任意个字符加上第一组所捕获的内容

这样子,如果这整个式子匹配到,表示,第一个捕获组内容在字符串中,至少出现两次,替换为 "" 空串.

进行 全局替换后, 整个字符串所出现的字符将不重复。

31、替换某行字符串中的某个单词:

	public static void main(String[] args) {
			   
		    String text = "Replaced Exact String Replace In Java";
		   
		    text = text.replaceAll("\\bReplace\\b", "abcd");
		   
		    System.out.println(text);
		  }

 32、正则表达式的相关语法和使用:

http://www.360doc.com/content/10/0611/18/11586_32554860.shtml

33、贪心算法解决找零钱方案:

源链接如下: http://hi.baidu.com/cntjdavid/item/9142a438640b1fc21b969612

代码如下:

public class Test {
	public static void main(String[] args)  
	{  
	        int m[]={25,10,5,1};  
	        int n=99;  
	        int[] num=new int[m.length];  
	        num=zhaoqian(m,n);  
	        System.out.println(n+"的找钱方案:");  
	        for(int i=0;i<m.length;i++)  
	        System.out.println(num[i]+"枚"+m[i]+"面值");  
	}  
	public static int[] zhaoqian(int m[],int n)  
	{  
	        int k=m.length;  
	        int[] num=new int[k];  
	        for(int i=0;i<k;i++)  
	        {  
	                num[i]=n/m[i];  
	                n=n%m[i];  
	        }  
	        return num;  
	}   
}

34、String类的split(String regex) 方法:

其中regex是一个正则表达式。

String str = "bcbcbcb,bcb,";
	String[] subStr = str.split("," , -1);
System.out.println(subStr.length());

 上面的结果返回3。subStr数组的值分别为“bcbcbcb” , “bcb”, “”

 35、判断某一年是否是闰年:

	private static boolean isLeapYear(int year){
		boolean b = false;
		if(year % 4 == 0 && year % 100 != 0 && year % 400 == 0){
			b = true;
		}		
		return b;
	}

 36、java判断一个char类型的值ch是否是整数,采用的方式是:

Character.isDigit(ch);

 37、大端序和小端序:

        Big-Endian和Little-Endian的定义如下:
1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:

1)大端模式:

低地址 -----------------> 高地址
0x12  |  0x34  |  0x56  |  0x78

2)小端模式:

低地址 ------------------> 高地址
0x78  |  0x56  |  0x34  |  0x12

可见,大端模式和字符串的存储模式类似。

 

 38、十进制和十六进制之间的转换:

// 十进制转化为十六进制,结果为C8。
Integer.toHexString(200);
// 十六进制转化为十进制,结果140。
Integer.parseInt("8C",16); 

 

 

 

 


分享到:
评论

相关推荐

    java基础总结资料

    "java基础总结资料"涵盖了Java语言的核心概念,是学习和复习Java基础知识的重要资源。以下是一些主要的知识点: 1. **Java语法基础**:包括变量声明、数据类型(基本类型和引用类型)、运算符、流程控制(如if语句...

    JAVA基础总结PPT

    JAVA基础总结PPT ,基础知识前4章部分,适合回顾总结用。

    java基础总结大全(笔记).pdf

    Java基础总结大全涵盖了Java编程语言的核心概念,从JVM、JRE和JDK的区别,到环境变量的设置,再到变量的定义和类型转换,深入浅出地讲解了Java的基础知识。 1. JVM、JRE和JDK: - JVM(Java Virtual Machine)是...

    java基础总结大全

    【Java基础总结大全】 Java是世界上最流行的编程语言之一,其跨平台特性主要依赖于Java虚拟机(JVM)。JVM是Java的核心组成部分,它解析并执行编译后的Java字节码,确保Java程序可以在任何支持JVM的操作系统上运行...

    JAVA基础知识总结.

    JAVA基础知识总结 JAVA基础知识总结 JAVA基础知识总结

    Java基础知识点总结.docx

    Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。

    java 基础知识总结(经典)

    这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...

    java基础总结.xmind

    IO、面向对象Object类、API、集合体系、IO体系、面向对象、多线程、递归、相互转换、正则表达式

    java基础知识总结

    Java 基础知识总结 Java 是一种广泛使用的编程语言,由 Sun 公司的 James Gosling 等人于 1991 年开始开发。Java 有三种技术架构:JavaEE、JavaSE 和 JavaME。JavaSE 是桌面应用程序的开发基础,JavaEE 是企业环境...

    01 java基础总结 xmind

    java基础知识总结 以思维导图的方式对java中的变量、八种基本类型、运算符和表达式、逻辑结构、数组、方法等知识点进行总结

    java 基础知识总结

    自己在网上找的相对好一点的java复习资料,留个纪念 。详细讲述了Java课程的知识点

    老毕java基础总结

    "老毕java基础总结"是一个专为初学者设计的学习资源,旨在帮助他们掌握Java编程的基础知识。下面,我们将深入探讨这份文档可能涵盖的关键知识点: 1. **Java环境配置**:学习Java的第一步是安装JDK(Java ...

    Java基础知识总结

    Java基础知识总结 一些的基础知识 适合初学者和回顾以前的知识

    java基础总结

    ### Java基础总结 #### 一、Java概述 Java是由Sun Microsystems公司(现已被Oracle收购)在1991年由James Gosling领导的团队所开发的一种面向对象的编程语言。最初命名为Oak,旨在用于控制嵌入式设备和消费电子...

    Java 基础核心总结_.zip

    这份"Java 基础核心总结_.zip"文件显然包含了学习Java编程所必需的重要知识点,旨在帮助初学者或开发者巩固基础。让我们逐一深入探讨这些主题: 1. **Java概述**:Java是一种跨平台、面向对象的编程语言,由Sun ...

    java基础学习总结

    ### Java基础学习总结 #### 一、Java基础知识 Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年发布。它具有平台独立性、安全性高、面向对象等特点,适用于开发各种应用程序。 ##### 1. IO流 IO流...

    Java 基础核心总结.pdf

    以上只是Java基础知识的冰山一角,深入学习Java还包括设计模式、网络编程、数据库连接、反射、注解、NIO等高级主题。Java的强大之处在于它的全面性、稳定性和广泛的应用场景,使其成为软件开发的首选语言。

    java基础知识总结(经典)

    Java 基础知识总结是 Java 程序员不可或缺的一部分,本总结将涵盖 Java 的基础知识,包括 Java 概述、Java 语法基础、变量、数据类型、运算符、控制语句、方法、数组、继承、多态、接口、异常、IO 流等。 一、Java ...

Global site tag (gtag.js) - Google Analytics