day13 java基础(StringBuffer类和Arrays工具类,Integer类)

-----------------------------知识点1-------------------------------------
package cn.itcast_01;
/*

  • 线程安全(多线程讲解)

  • 安全–同步–数据是安全的

  • 不安全–不同步–效率高一些

  • 安全:银行的网站

  • 效率:新闻网站,讨论子类的

  • StringBuffer:

  • 线程安全的可变字符串。

  • StringBuffer和String的区别是:

  • 前者的的长度和内容可变,后者的内容和长度不可变

  • 如果用StringBuffer来做字符拼接,不会浪费太多资源。

  • StringBuffer的构造方法:

  • public StringBuffer() :无参构造方法
    public StringBuffer(int capacity):指定容量的字符串缓冲区对象
    public StringBuffer(String str):指定字符串内容的字符串缓冲区对象

  • StringBuffer的方法:

  •  public int capacity():返回当前容量。理论值
    
  •  public int length():返回实际值
    
  • */
    public class StringBufferDemo {
    public static void main(String[] args) {
    // public StringBuffer() :无参构造方法
    StringBuffer sb = new StringBuffer();
    System.out.println(“sb”+sb);
    System.out.println(“sb的当前容量:”+sb.capacity());
    System.out.println(“sb的实际长度:”+sb.length());
    System.out.println("-------------------------");

     // public StringBuffer(int capacity):指定容量的字符串缓冲区对象
     StringBuffer sb1 = new StringBuffer(212);
     System.out.println("sb1"+sb1);
     System.out.println("sb1的当前容量:"+sb1.capacity());
     System.out.println("sb1的实际长度:"+sb1.length());
     System.out.println("-------------------------");
    
     //public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
     StringBuffer sb2 = new StringBuffer("hello");
     System.out.println("sb2"+sb2);
     System.out.println("sb2的当前容量:"+sb2.capacity());
     System.out.println("sb2的实际长度:"+sb2.length());
     System.out.println("-------------------------");
    

    }
    }
    -----------------------------知识点2-------------------------------------
    package cn.itcast_02;
    /*

  • StringBuffer的添加功能:

  • public StringBuffer append(String str):可以把任意数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

  • public StringBuffer insert(int offset,String str):可以指定位置把任意类型的数据插入到字符串缓冲区里面,返回字符串缓冲区本身

  • */
    public class StringBufferDemo {
    public static void main(String[] args) {
    // 创建字符串缓冲区对象
    StringBuffer sb = new StringBuffer();

     // 调用添加功能
     StringBuffer sb2 = sb.append("hello");
     System.out.println("sb:"+sb);
     System.out.println("sb2:"+sb2);
     System.out.println(sb == sb2);// true
     System.out.println("-------------------------");
     
     // 一步一步添加
    

// sb.append(123);
// sb.append(232.213);
// sb.append(true);
// System.out.println(“sb:”+sb);
// System.out.println("-------------------------");
//
// 链式编程添加
sb.append(123).append(232.213).append(true);
System.out.println(“sb:”+sb);
System.out.println("-------------------------");

	// public StringBuffer insert(int offset,String str):可以指定位置把任意类型的数据插入到字符串缓冲区里面,返回字符串缓冲区本身
	sb.insert(5,"hello");
	System.out.println("sb:"+sb);
	System.out.println("------------------------");
}

}
-----------------------------知识点3-------------------------------------
package cn.itcast_03;
/*

  • public StringBuffer deleteCharAt(int index):删除指定索引位置的字符,并返回本身
    public StringBuffer delete(int start,int end):删除指定开始到结束的索引的字符,并返回本身

  • */
    public class StringBufferDemo {
    public static void main(String[] args) {
    // 创建对象
    StringBuffer sb = new StringBuffer();

     sb.append("hello").append("java").append(123);
     
     //public StringBuffer deleteCharAt(int index):删除指定索引位置的字符,并返回本身
     sb.deleteCharAt(0);
     System.out.println("sb:"+sb);
     
    
     //public StringBuffer delete(int start,int end):删除指定开始到结束的索引的字符,并返回本身
     sb.delete(1, 3);
     System.out.println("sb:"+sb);
     
     // 删除所有
     sb.delete(0, sb.length());
    

    }
    }
    -----------------------------知识点4-------------------------------------
    package cn.itcast_04;
    /*

  • 替换功能
    public StringBuffer replace(int start,int end,String str) // 替换start到end之间的数据,用str替代,包左不包右

  • */
    public class StringBufferDemo {
    public static void main(String[] args) {
    // 创建字符串缓冲区对象
    StringBuffer sb = new StringBuffer();

     // 添加字符串
     sb.append("hello").append("java").append(123);
     System.out.println("sb:"+sb);
     
     // public StringBuffer replace(int start,int end,String str)
     sb.replace(0, 5, "Hello");
     System.out.println("sb:"+sb);
    

    }
    }
    -----------------------------知识点5-------------------------------------
    package cn.itcast_05;
    /*

  • 反转功能 public StringBuffer reverse()

  • */
    public class StringBufferDemo {
    public static void main(String[] args) {
    // 创建字符串缓冲区对象
    StringBuffer sb = new StringBuffer();

     // 添加字符串
     sb.append("hello").append("java").append(123);
     System.out.println("sb:"+sb);
     
     // public StringBuffer reverse()
     sb.reverse();
     System.out.println("sb:"+sb);
    

    }
    }
    -----------------------------知识点6-------------------------------------
    package cn.itcast_06;
    /*

  • 截取功能
    public String substring(int start) :截取功能,返回一个String类型数据
    public String substring(int start,int end):截取功能,从start开始到end结束,返回一个String类型数据

  • */
    public class StringBufferDemo {
    public static void main(String[] args) {
    // 创建字符串缓冲区对象
    StringBuffer sb = new StringBuffer();

     // 添加字符串
     sb.append("hello").append("java").append(123);
     System.out.println("sb:"+sb);
     
     // public String substring(int start) :截取功能,返回一个String类型数据
     String s = sb.substring(1);
     System.out.println("sb:"+sb);
     System.out.println("s:"+s);
     System.out.println("------------------");
     
     // public String substring(int start,int end):截取功能,从start开始到end结束,返回一个String类型数据
     String s2 = sb.substring(5,9);
     System.out.println("sb:"+sb);
     System.out.println("s2:"+s2);
    

    }
    }
    -----------------------------知识点7-------------------------------------
    package cn.itcast_07;
    /*

  • 为什么要讲解类之间的转换:

  • A—B的转换

  • 我们把A转换成B,为了使用B的功能

  • B–A的转换

  • 我们可能需要的结果是A类型,所以还得转回来

  • String和StringBuffer的相互转换:

  • */
    public class StringBufferTest {
    public static void main(String[] args) {
    // 定义一个字符串
    String s = “hello world”;

     // 将String类型转化成StringBuffer类型   方式1 通过构造方法
     StringBuffer  sb = new StringBuffer(s);
     System.out.println("sb:"+sb);
     System.out.println("----------------------");
     
     // 将String类型转化成StringBuffer类型   方式2 通过append方法
     StringBuffer sb1 = new StringBuffer();
     sb1.append(s);
     System.out.println("sb1:"+sb1);
     System.out.println("----------------------");
     
     // 将StringBuffer类型转化String成类型   方式1 通过toString()方法
     String s1 = sb.toString();
     System.out.println("s1:"+s1);
     System.out.println("----------------------");
     
     // 将StringBuffer类型转化String成类型   方式2 String的构造方法
     String s2 = new String(sb);
     System.out.println("s2:"+s2);
     System.out.println("----------------------");
     
     System.out.println("sb:"+sb);
    

    }
    }
    -----------------------------知识点8-------------------------------------
    package cn.itcast_07;
    /*

  • 把数组拼接成一个字符串

  • */
    public class StringBufferTest2 {
    public static void main(String[] args) {
    // 定义一个数组
    int [] arr = {1,2,3,4,5,6};

     // 方法1
     String s1 = StringBufferTest2.ArrayToString(arr);
     System.out.println("s1:"+s1);
     System.out.println("-------------------");
     
     // 方法2
     String s2 = StringBufferTest2.BufferArrayToString(arr);
     System.out.println("s2:"+s2);
     System.out.println("-------------------");
    

    }
    // 方法1 通过String类中的方法进行拼接
    public static String ArrayToString(int [] arr){
    String s = “”;
    s +="[";
    for(int x=0;x<arr.length;x++){
    if(x==arr.length-1){
    s += arr[x];
    }else{
    s += arr[x];
    s +=", ";
    }

     }
    

    s +="]";
    return s;
    }

    // 方法2 通过BufferString中的拼接
    public static String BufferArrayToString(int [] arr){
    // 创建StringBuffer
    StringBuffer sb = new StringBuffer();
    sb.append("[");
    for(int x=0;x<arr.length;x++){
    if(x==arr.length-1){
    sb.append(arr[x]);
    }else{
    sb.append(arr[x]);
    sb.append(", “);
    }
    }
    sb.append(”]");

     // 将StringBuffer类型转换成String类型
     // 方式1 通过toString方法
     //String s = sb.toString();
    // return s;
     
     // 方式2 通过构造方法
     String s2 = new String(sb);
     return s2;
    

    }

}
-----------------------------知识点9-------------------------------------
package cn.itcast_07;
/*

  • 字符串反转
  • */

import java.util.Scanner;

public class StringBufferTest3 {
public static void main(String[] args) {
// 创建键盘录入
Scanner sc = new Scanner(System.in);
System.out.println(“请输入要反转的字符串:”);
String s = sc.nextLine();

	// 方式1 通过String进行拼接
	System.out.println("反转后的结果:");
	System.out.println(StringBufferTest3.ReverseString(s));
	System.out.println("--------------------------");
	
	// 方式2 通过tringBuffer类的reverse方法进行反转
	System.out.println("反转后的结果:");
	System.out.println(StringBufferTest3.ReverseString2(s));
	System.out.println("--------------------------");
}
// 方式1 通过String进行拼接
public static String ReverseString(String s){
	String s1 = "";
	for(int x=s.length()-1;x>=0;x--){
		s1 +=s.charAt(x);
	}
	return s1;
}

// 方式2 通过StringBuffer类的reverse方法
public static String ReverseString2(String s){
	StringBuffer sb = new StringBuffer(s);
	return sb.reverse().toString();
}

}
-----------------------------知识点10-------------------------------------
package cn.itcast_07;

import java.util.Scanner;

/*

  • 判断一个字符串是否是对称字符串
    例如"abc"不是对称字符串,“aba”、“abba”、“aaa”、"mnanm"是对称字符串

  • 方法1:

  •  将字符串反转,如果反转后的字符串和未反转的字符串相等则是对称字符串,返回true,否则返回
    
  •  false。	
    
  • 方法 2 :

  •  将字符串的第一个和最后一个比较
    
  •  将字符串的第二个和倒数第二个比较
    
  •  。。。
    
  • */
    public class StringBufferTest4 {
    public static void main(String[] args) {
    // 创建字符串键盘录入
    Scanner sc = new Scanner(System.in);
    // 提示输入信息
    System.out.println(“请输入字符串:”);
    // 接收键盘录入数据
    String s = sc.nextLine();

     // 调用方法1
     System.out.println(StringBufferTest4.Compare(s));
     System.out.println("--------------------------");
     
     // 调用方法2
     System.out.println(StringBufferTest4.Compare2(s));
     System.out.println("--------------------------");
    

    }

    // 方法1
    public static boolean Compare(String s){
    // 创建字符串缓冲区对象
    StringBuffer sb = new StringBuffer(s);
    return (s.equals(sb.reverse().toString()));
    }

    // 方法2
    public static boolean Compare2(String s){
    char arr [] = s.toCharArray();
    boolean flag = true;
    for(int start =0,end=arr.length-1;start<=end;start++,end–){
    if(arr[start] != arr[end]){
    flag = false;
    break;
    }
    }
    return flag;

    }
    }
    -----------------------------知识点11-------------------------------------
    package cn.itcast_08;
    /*

  • 面试题:

  • 1.String,StringBuffer,StringBulid的区别?

  • a.String的内容是不可变的,而StringBuffer,StringBuilder都是可变的

  • b.StringBuffer是同步的,数据安全的,效率低的;StringBuilder是不同步的,数据不安全的,效率高

  • 2.StringBuffer和数组的区别

  • 二者都可以看做是一个容器,装其他的数据

  • 但是呢,StringBuffer的数据最终是一个字符串数据

  • 而数组必须放同一种类型的数据

  • 3.形式参数的问题

  • String 做为参数传递

  • StringBuffer做为参数传递

  • 形式参数:

  • 基本类型:形式参数的改变不影响实际参数

  • 引用类型:形式参数的改变直接影响实际参数

  • 注意:

  •  String做为参数传递,效果和基本类型做为参数传递是一样的。
    
  • */
    public class StringBufferDemo {
    public static void main(String[] args) {
    String s1 = “hello”;
    String s2 = “world”;
    int num1 = 1;
    int num2 = 2;
    StringBuffer sb1 = new StringBuffer(“hello”);
    StringBuffer sb2 = new StringBuffer(“world”);

     System.out.println(s1+"---"+s2); // hello---world
     System.out.println(num1+"---"+num2);
     System.out.println(sb1+"---"+sb2); // hello---world
     System.out.println("-------------------");
     change(s1,s2);
     change(num1,num2);
     change(sb1,sb2);
     System.out.println(s1+"---"+s2); // hello---world
     System.out.println(num1+"---"+num2);
     System.out.println(sb1+"---"+sb2); // hello---worldworld 
    

    }
    public static void change(String s1,String s2){
    s1 = s2;
    s2 = s2+s1;
    }

    public static void change(int num1,int num2){
    num1 = num2;
    num2 = num1+num2;
    }

    public static void change(StringBuffer sb1,StringBuffer sb2){
    sb1 = sb2;
    sb2 = sb2.append(sb1);
    }
    }
    -----------------------------知识点12-------------------------------------
    package cn.itcast_01;
    /*

  • 需求1:计算100的二进制,八进制,十六进制

  • 需求2:判断一个数据是否是int范围内的

  • public static String toBinaryString(int i) 将int数据转换成二进制
    public static String toOctalString(int i) 将int数据转换成八进制
    public static String toHexString(int i) 将int数据转换成十六进制

  • 为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型。包装类类型。

  • byte Byte

  • short Short

  • int Integer

  • long Long

  • float Float

  • double Double

  • char Character

  • boolean Boolean

  • */

public class IntergerDemo {
public static void main(String[] args) {
//public static String toBinaryString(int i) 将int数据转换成二进制
System.out.println(“100d的二进制:”+Integer.toBinaryString(100));

	//public static String toOctalString(int i)	将int数据转换成八进制
	System.out.println("100d的八进制:"+Integer.toOctalString(100));
	
	//public static String toHexString(int i)   将int数据转换成十六进制
	System.out.println("100d的十六进制:"+Integer.toHexString(100));
	
	System.out.println(Integer.MAX_VALUE);
	System.out.println(Integer.MIN_VALUE);
}

}
-----------------------------知识点13-------------------------------------
package cn.itcast_02;
/*

  • Integer的构造方法:

  • public Integer(int value)

  • public Integer(String s)

  •  注意:这个字符串必须是由数字字符组成
    
  • */
    public class IntegerDemo {
    public static void main(String[] args) {
    // 方式1
    int i = 100;
    Integer ii = new Integer(i);
    System.out.println(“ii:” + ii);

     // 方式2
     String s = "100";
     // NumberFormatException
     // String s = "abc";
     Integer iii = new Integer(s);
     System.out.println("iii:" + iii);
    

    }
    }
    -----------------------------知识点14-------------------------------------
    package cn.itcast_03;

/*

  • int类型和String类型的相互转换
  • int – String
  •  String.valueOf(number)
    
  • String – int
  •  Integer.parseInt(s)
    

*/
public class IntegerDemo {
public static void main(String[] args) {
// int – String
int number = 100;
// 方式1
String s1 = “” + number;
System.out.println(“s1:” + s1);
// 方式2
String s2 = String.valueOf(number);
System.out.println(“s2:” + s2);
// 方式3
// int – Integer – String
Integer i = new Integer(number);
String s3 = i.toString();
System.out.println(“s3:” + s3);
// 方式4
// public static String toString(int i)
String s4 = Integer.toString(number);
System.out.println(“s4:” + s4);
System.out.println("-----------------");

	// String -- int
	String s = "100";
	// 方式1
	// String -- Integer -- int
	Integer ii = new Integer(s);
	// public int intValue()
	int x = ii.intValue();
	System.out.println("x:" + x);
	//方式2
	//public static int parseInt(String s)
	int y = Integer.parseInt(s);
	System.out.println("y:"+y);
}

}
-----------------------------知识点15-------------------------------------
package cn.itcast_04;

/*

  • 常用的基本进制转换

  • public static String toBinaryString(int i)

  • public static String toOctalString(int i)

  • public static String toHexString(int i)

  • 十进制到其他进制

  • public static String toString(int i,int radix)

  • 由这个我们也看到了进制的范围:2-36

  • 为什么呢?0,…9,a…z

  • 其他进制到十进制

  • public static int parseInt(String s,int radix)
    */
    public class IntegerDemo {
    public static void main(String[] args) {
    // 十进制到二进制,八进制,十六进制
    System.out.println(Integer.toBinaryString(100));
    System.out.println(Integer.toOctalString(100));
    System.out.println(Integer.toHexString(100));
    System.out.println("-------------------------");

     // 十进制到其他进制
     System.out.println(Integer.toString(100, 10));
     System.out.println(Integer.toString(100, 2));
     System.out.println(Integer.toString(100, 8));
     System.out.println(Integer.toString(100, 16));
     System.out.println(Integer.toString(100, 5));
     System.out.println(Integer.toString(100, 7));
     System.out.println(Integer.toString(100, -7));
     System.out.println(Integer.toString(100, 70));
     System.out.println(Integer.toString(100, 1));
     System.out.println(Integer.toString(100, 17));
     System.out.println(Integer.toString(100, 32));
     System.out.println(Integer.toString(100, 37));
     System.out.println(Integer.toString(100, 36));
     System.out.println("-------------------------");
     
     //其他进制到十进制
     System.out.println(Integer.parseInt("100", 10));
     System.out.println(Integer.parseInt("100", 2));
     System.out.println(Integer.parseInt("100", 8));
     System.out.println(Integer.parseInt("100", 16));
     System.out.println(Integer.parseInt("100", 23));
     //NumberFormatException
     //System.out.println(Integer.parseInt("123", 2));
    

    }
    }
    -----------------------------知识点16-------------------------------------
    package cn.itcast_05;
    /*

  • JDK5的新特性

  • 自动装箱:把基本类型转换成包装类类型

  • 自动拆箱:把包装类类型转换为基本类型

  • */
    public class IntegerDemo {
    public static void main(String[] args) {
    // 定义一个int类型的包装类类型数据i
    Integer ii = new Integer(100);
    ii +=200;
    System.out.println(“ii:”+ii);

      // 反编译代码
     // 通过反编译后的代码
     	// Integer ii = Integer.valueOf(100); //自动装箱
     	// ii = Integer.valueOf(ii.intValue() + 200); //自动拆箱,再自动装箱
     	// System.out.println((new StringBuilder("ii:")).append(ii).toString());
    
     	Integer iii = null;
     	// NullPointerException
     	
     	if (iii != null) {
     		iii += 1000;
     		System.out.println(iii);
     	}
    

    }
    }
    -----------------------------知识点17-------------------------------------
    package cn.itcast_06;
    /*

  • 注意:Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池里获取数据

  • */
    public class IntergerDemo {
    public static void main(String[] args) {
    Integer i1 = new Integer(127);
    Integer i2 = new Integer(127);
    System.out.println(i1==i2);
    System.out.println(i1.equals(i2));
    System.out.println("-----------------------");

     Integer i3 = new Integer(128);
     Integer i4 = new Integer(128);
     System.out.println(i3==i4);
     System.out.println(i3.equals(i4));
     System.out.println("-----------------------");
     
     Integer i5 = 128;
     Integer i6 = 128;
     System.out.println(i5==i6);
     System.out.println(i5.equals(i6));
     System.out.println("-----------------------");
     
     Integer i7 = 127;
     Integer i8= 127;
     System.out.println(i7==i8);
     System.out.println(i7.equals(i8));
     System.out.println("-----------------------");
     
     // 通过查看源码,我们就知道了,针对-128到127之间的数据,做了一个数据缓冲池,如果数据是该范围内的,每次并不创建新的空间
     // Integer ii = Integer.valueOf(127);
    

    }
    }
    -----------------------------知识点18-------------------------------------
    package cn.itcast_01;
    /*

  • 冒泡排序法的代码实现

  • int [] arr = {1,2,3,4,9,6,8,7,5,10};

  • 实现从大到小排序

  • */
    public class ArrayDemo {
    public static void main(String[] args) {
    int [] arr = {1,2,3,4,4,9,6,8,7,5,10};
    System.out.println(MaoPao(arr));

    }
    public static String MaoPao(int [] arr){
    // 数组的冒泡排序
    for(int x =0;x<arr.length-1;x++){
    for(int y=x+1;y<arr.length;y++){
    if(arr[x] >= arr[y]){
    int temp = arr[x];
    arr[x] = arr[y];
    arr[y] = temp;
    }
    }
    }

     // 输出数组,采用字符拼接的方法
     String s = "[";
     for(int x=0;x<arr.length;x++){
     	if(x==arr.length-1){
     		s +=arr[x];
     	}else{
     		s +=arr[x];
     		s +=", ";
     	}
     }
     s +="]";
     return s;
    

    }
    }
    -----------------------------知识点19-------------------------------------
    package cn.itcast_02;
    /*

  • 需求:

  • 把字符串中的字符进行排序。
    举例:”dacgebf”
    结果:”abcdefg”

  • */
    public class ArrayTest {
    public static void main(String[] args) {

     //定义一个字符串
     String s = "dacgebf";
     System.out.println("排序前:"+s);
     
     // 将字符串转成字符数组
     char [] chs = s.toCharArray();
     
     // 调用方法,进行冒泡排序
     String s1 = MaoPao(chs);
     System.out.println("排序后:"+s1);
    

    }
    public static String MaoPao(char [] chs){
    for(int x=0;x<chs.length-1;x++){
    for(int y=0;y<chs.length-1-x;y++){
    if(chs[y]>chs[y+1]){
    char temp = chs[y];
    chs[y]=chs[y+1];
    chs[y+1]=temp;
    }
    }

     }
     String s = String.valueOf(chs);
     return s;
    

    }
    }
    -----------------------------知识点20 总结-------------------------------------
    package cn.itcast_03;
    /*

  • 基本查找 数组元素无序(从头大小)
    二分查找 数组元素有序(折半查找)

  • 分析:

  •  A:定义最大索引,最小索引
    
  •  B:计算出中间索引
    
  •  C:拿中间索引的值和要查找的值进行比较
    
  •  	相等:就返回当前的中间索引
    
  •  	不相等:
    
  •  		大	左边找
    
  •  		小	右边找
    
  •  D:重新计算出中间索引
    
  •  	大	左边找
    
  •  		max = mid - 1;
    
  •  	小	右边找
    
  •  		min = mid + 1;
    
  •  E:回到B
    
  • */
    public class ArrayDemo {
    public static void main(String[] args) {
    // 定义一个数组
    int [] arr = {11,22,33,44,55,66};

     // 写功能实现
     System.out.println(getIndex(arr,612));
    

    }
    public static int getIndex(int [] arr,int value){

     // 定义最大和最小索引
     int maxIndex = arr.length-1;
     int minIndex = 0;
     
     //计算中间索引
     int midIndex = (arr.length-1)/2;
     
     while(arr[midIndex]!=value){
     	if(arr[midIndex]>value){
     		maxIndex = midIndex-1;
     	}
     	if(arr[midIndex]<value){
     		minIndex = midIndex+1;
     	}
     	if(minIndex>maxIndex){
     		return -1;
     	}
     	
     	//计算中间索引
         midIndex = (minIndex+maxIndex)/2;
     }
     return midIndex;
    

    }
    }

package cn.itcast_04;

import java.util.Arrays;

/*

  • Arrays:针对数组操作的工具类。

  • 1.public static String toString(int[] a) 把数组转换成字符串
    2.public static void sort(int[] a) 对数组进行升序排序
    3.public static int binarySearch(int[] a,int key) 二分查找

  • */
    public class ArraysDemo {
    public static void main(String[] args) {
    // 定义一个数组
    int arr [] = {11,22,4,3,55,88,23,34,21};

     // 1.public static String toString(int[] a) 把数组转换成字符串
     String s = Arrays.toString(arr);
     System.out.println("排序前:"+s);
     
     // 2.public static void sort(int[] a) 对数组进行升序排序
     System.out.println("按升序排序后:");
     Arrays.sort(arr);
     System.out.println(Arrays.toString(arr));
     
     
     // 3.public static int binarySearch(int[] a,int key)  二分查找
     System.out.println(Arrays.binarySearch(arr, 342));
    

    }
    }

package cn.itcast_01;
/*

  • Character 类在对象中包装一个基本类型 char 的值
    此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然

  • */
    public class CharacterDemo {
    public static void main(String[] args) {
    // 创建对象
    Character ch = new Character(‘a’);
    System.out.println(“ch:”+ch);

    }
    }

package cn.itcast_02;
/*

  • public static boolean isUpperCase(char ch): 判断字符是否为大写
    public static boolean isLowerCase(char ch): 判断字符是否为小写
    public static boolean isDigit(char ch): 判断字符是否为数字
    public static char toUpperCase(char ch):把字符转成大写
    public static char toLowerCase(char ch):把字符转成小写

  • */
    public class CharacterDemo {
    public static void main(String[] args) {
    // 定义字符
    char c1 = ‘a’;
    char c2 = ‘A’;
    System.out.println(Character.isUpperCase(c2));
    System.out.println(Character.isLowerCase(c1));
    System.out.println(Character.isDigit(c1));
    System.out.println(Character.toUpperCase(c1));
    System.out.println(Character.toLowerCase(c2));

    }
    }

package cn.itcast_03;

import java.util.Scanner;

/*

  • 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数.(不考虑其他字符)

  • 分析

  • 1.定义三个统计变量

  •  BigCount = 0;
    
  •  SmallCount = 0;
    
  •  NumberCount = 0;
    
  • 2.键盘录入一个字符串

  • 3.将字符串转化成字符数组 arr

  • 4.循环遍历

  •  if (Character.isUpperCase(arr[x])){
    
  •  	BigCount++;
    
  •   }
    
  •   if(Character.isLowerCase(arr[x])){
    
  •   	SmallCount++;
    
  •   }
    
  •   if(Character.isDigit(arr[x])){
    
  •   	SmallCount++;
    
  •   }
    
  • */
    public class CharacterTest {
    public static void main(String[] args) {
    // 创建键盘录入对象
    Scanner sc = new Scanner(System.in);
    // 接收键盘录入数据
    System.out.println(“请输入一个字符串(只能包含大小写字母和数字):”);
    String s = sc.nextLine();

     // 调用判断方法
     Find(s);
    

    }
    public static void Find(String s){
    // 将字符串转化成字符数组
    char [] arr = s.toCharArray();

     // 定义统计变量
     int BigCount = 0;
     int SmallCount = 0;
     int NumberCount = 0;
     
     // 遍历数组
     for (int x=0;x<arr.length;x++){
     	if (Character.isUpperCase(arr[x])){
     		 BigCount++;
     	}
     	if(Character.isLowerCase(arr[x])){
     		 SmallCount++;
     	}
     	if(Character.isDigit(arr[x])){
     		  NumberCount++;
     	}
     }
     System.out.println("您输入的字符串为:"+s);
     System.out.println("包含"+BigCount+"个大写字母");
     System.out.println("包含"+SmallCount+"个小写字母");
     System.out.println("包含"+NumberCount+"个数字");
    

    }
    }

1:StringBuffer(掌握)
(1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了
一个字符串缓冲区类。StringBuffer供我们使用。
(2)StringBuffer的构造方法
A:StringBuffer()
B:StringBuffer(int size)
C:StringBuffer(String str)
(3)StringBuffer的常见功能(自己补齐方法的声明和方法的解释)
A:添加功能
B:删除功能
C:替换功能
D:反转功能
E:截取功能(注意这个返回值)
(4)StringBuffer的练习(做一遍)
A:String和StringBuffer相互转换
String – StringBuffer
构造方法
StringBuffer – String
toString()方法
B:字符串的拼接
C:把字符串反转
D:判断一个字符串是否对称
(5)面试题
小细节:
StringBuffer:同步的,数据安全,效率低。
StringBuilder:不同步的,数据不安全,效率高。
A:String,StringBuffer,StringBuilder的区别
B:StringBuffer和数组的区别?
(6)注意的问题:
String作为形式参数,StringBuffer作为形式参数。

2:数组高级以及Arrays(掌握)
(1)排序
A:冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。

		public static void bubbleSort(int[] arr) {
			for(int x=0; x<arr.length-1; x++) {
				for(int y=0; y<arr.length-1-x; y++) {
					if(arr[y] > arr[y+1]) {
						int temp = arr[y];
						arr[y] = arr[y+1];
						arr[y+1] = temp;
					}
				}
			}
		}
		
	B:选择排序
		把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。
		
		public static void selectSort(int[] arr) {
			for(int x=0; x<arr.length-1; x++) {
				for(int y=x+1; y<arr.length; y++) {
					if(arr[y] < arr[x]) {
						int temp = arr[x];
						arr[x] = arr[y];
						arr[y] = temp;
					}
				}
			}
		}
(2)查找
	A:基本查找
		针对数组无序的情况
		
		public static int getIndex(int[] arr,int value) {
			int index = -1;
			
			for(int x=0; x<arr.length; x++) {
				if(arr[x] == value) {
					index = x;
					break;
				}
			}
			
			return index;
		}
	B:二分查找(折半查找)
		针对数组有序的情况(千万不要先排序,在查找)
		
		public static int binarySearch(int[] arr,int value) {
			int min = 0;
			int max = arr.length-1;
			int mid = (min+max)/2;
			
			while(arr[mid] != value) {
				if(arr[mid] > value) {
					max = mid - 1;
				}else if(arr[mid] < value) {
					min = mid + 1;
				}
				
				if(min > max) {
					return -1;
				}
				
				mid = (min+max)/2;
			}
			
			return mid;
		}
(3)Arrays工具类
	A:是针对数组进行操作的工具类。包括排序和查找等功能。
	B:要掌握的方法(自己补齐方法)
		把数组转成字符串:
		排序:
		二分查找:
(4)Arrays工具类的源码解析
(5)把字符串中的字符进行排序
	举例:
		"edacbgf"
		得到结果
		"abcdefg"

3:Integer(掌握)
(1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
(2)Integer的构造方法
A:Integer i = new Integer(100);
B:Integer i = new Integer(“100”);
注意:这里的字符串必须是由数字字符组成
(3)String和int的相互转换
A:String – int
Integer.parseInt(“100”);
B:int – String
String.valueOf(100);
(4)其他的功能(了解)
进制转换
(5)JDK5的新特性
自动装箱 基本类型–引用类型
自动拆箱 引用类型–基本类型

	把下面的这个代码理解即可:
		Integer i = 100;
		i += 200;
(6)面试题
	-128到127之间的数据缓冲池问题

4:Character(了解)
(1)Character构造方法
Character ch = new Character(‘a’);
(2)要掌握的方法:(自己补齐)
A:判断给定的字符是否是大写
B:判断给定的字符是否是小写
C:判断给定的字符是否是数字字符
D:把给定的字符转成大写
E:把给定的字符转成小写
(3)案例:
统计字符串中大写,小写及数字字符出现的次数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据型 在C语言中,变量用于存储数据,数据型用于定义变量的型和范围。C语言支持多种数据型,包括基本数据型(如int、float、char等)和复合数据型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同型数据的复合数据型。结构体由多个成员组成,每个成员可以是不同的数据型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值