- 一、API
- 二、枚举
- 三、包装类
- 四、Math类
- 五、String类
- 、字符串常用方法
- 1、length()和equals()
- 2、concat()拼接字符串
- 3、indexOf()寻找字符所在位置
- 4、lastIndexOf()找最后一个元素的下标
- 5、subString()
- 6、trim()清空前后所有空格
- 7、replaceAll(””,””)将前面参数全部转为后面的参数
- 8、replaceFirst()只替换第一个出现的匹配字符
- 9、toCharArray()
- 10、split(“ “)
- 11、给定字符串查找元素的个数
- 12、歌词一行带空格转为多行
- 13、作业提交系统
- 14、模拟压缩
- 15、模拟解压
- 16、统计字符串数字个数,摘取,排序
- 17、逆序输出:i am groot 逆置为:groot am i
- 18、To be or not to be”,将变成”oT eb ro ton ot eb.”
- 19、示例 1 输入: 123 输出: 321
- 20、给定数组和一个数,寻找数组中2个数的和
- 六、StringBuffer和stringBuilder
- 七、日期操作类
一、API
1、应用程序编程接口(java Application Programming Interface)—-API的说明文档或者帮助文档
二、枚举
1、由一组固定的常量组成的类型
2、语法:public enum SexEnum {
BOY,GRIL
}
3、
public enum SexEnum {BOY,GRIL}public enum StudyEnum {L1,L2,L3}public class Student {public SexEnum sex;public StudyEnum study;}测试、、、、public static void main(String[] args) {Student stu=new Student();//类型只能在枚举中定义的两个中选择stu.sex=SexEnum.GRIL;if(stu.sex==SexEnum.GRIL){System.out.println("织布去了");}if(stu.sex==SexEnum.BOY){System.out.println("放牛去了");}Scanner input=new Scanner(System.in);stu.study=StudyEnum.L1;if(stu.study==StudyEnum.L1){System.out.println("大数据开发工程师");}if(stu.study==StudyEnum.L2){System.out.println("大数据挖掘工程师");}if(stu.study==StudyEnum.L3){System.out.println("大数据架构师");}}
三、包装类
1、八种基本数据类型
byte、short、int、long、float、double、boolean、char
2、对应的包装类
Byte、Short、Integer、Long、Float、Double、Boolean、Character
3、
/*** byte short long int float double boolean char**///字节型----整数的基本数据类型的默认值都是0byte a1;//字节型的包装类,可以直接赋值Byte b1=1,原始的方法如下Byte b1=new Byte("123");Byte b11;//因为是个对象,没有初始化,默认值是null//短整型short a2=7;Short b2;//默认值是null//整型int a3=12;Integer b3;//默认值是null//长整型long a4=1000l;//表示1000是long型Long b4=a4;//基本数据类型和包装类之间自动转换(装箱和拆箱)//单精度浮点数-----小数的基本数据类型的默认值都是0.0float a5=0.75f;Float b5;//null//双精度浮点数double a6=8.41d;Double b6;//null//布尔型-----默认值是falesboolean a7=true;Boolean b7;//null,对象未被初始化的默认值就是null//字符型---默认值是空格' ';char a8='a';Character b8;//nullpublic static void main(String[] args) {T1 t1=new T1();System.out.println(t1.b8);}
4、字符串,包装类,基本数据类型之间的转换
public static void main(String[] args) {//创建了一个Integer对象,并且赋值为3;Integer inte1=new Integer(3);//创建了一个Integer对象,将字符串3转化为数字3并赋值//在转换过程中,如果转换失败,会抛出数字转换异常NumberFormatExceptionInteger inte2=new Integer("3");//boolean的构造方法中,如果参数中填入true(不分大小写)//,结果均为true,否则为falseBoolean b=new Boolean("True");//1、将int型和integer型进行类型转换;int a1=5;//(1)、通过构造方法进行类型转换Integer b1=new Integer(a1);//(2)、自动转换b1=a1;//2、将integer型转成int型a1=b1;//3.基本数据类型和包装类型转String类型String s1=a1+" ";Integer i1=5;String s2=i1+" ";s2=String.valueOf(i1);//4.String类转包装和基本数据类型String s3="5";Integer i2=Integer.parseInt(s3);int a2=Integer.parseInt(s3);}
5、//泛型中不可以放基本数据类型。需要使用包装类代替
List
四、Math类
1、求绝对值。Math.abs();
int a=Math.abs(-5);
System.out.println(a);
2、最大值和最小值
double b=Math.max(11.3, -2.4); int c=Math.min(5, 8);
System.out.println(b); System.out.println(c);
3、随机数:(大数-小数+1)+小数
0-9: int a=(int)(Math.random()10);
1-10:int a=(int)(Math.random()10+1);
3-8:int a=(int)(Math,random()(8-3+1)+3)
Math.floor((Math.random()*(Max-Min+1))+Min)
Random rand=new Random();
for(){
0-9: int num=rand.nextIn(10);
5-8: int random1=r.nextInt(8-5+1)+5;
}
4、伪随机数
//3是种子,(参照种子生成的随机数) 伪随机数Random r1=new Random(3);Random r2=new Random(3);for (int i = 0; i < 10; i++) {int random1=r1.nextInt(10);int random2=r2.nextInt(10);System.out.println(random1+"----"+random2);}System.out.println("----------------");RandomTest rt=new RandomTest();for (int i = 0; i < 10; i++) {System.out.println(rt.myRandom());}}public int myRandom(){return (int)(System.nanoTime()%10);}}
五、String类
1、==比较的是值;equals()比较的是内存地址;只要是new出来的对象,就会重新创建一个地址,虽然值相等,但是内存地址不同也是false;
public static void main(String[] args) {String s1="abc";//JVM帮助创建的对象,手动赋值abcString s2=new String();//空串(有内存地址无内容);null(没有内存地址无内容)String s3=new String("abc");//创建String对象并且赋值为abcSystem.out.println("比较值:"+s1.equals(s3));//比较值System.out.println("比较值:"+(s1==s3));//比较地址---false//String s4="abc";//JVM帮助创建的对象,//会先检测有没有已经创建好的值为abc的对象;//如果有,直接指向该对象,所以比较地址是一样的System.out.println("比较值2:"+(s1==s4));//----true//new 出的对象每次都会开辟新的内存空间地址String s5=new String("abc");System.out.println("比较地址3:"+(s3==s5));//---false//JVM发现拼接字符串,会用拼接后的值进行比较,如果存在该值则指向该内存地址String s6="a"+"bc";System.out.println("比较地址4:"+(s1==s6));//---true}
2、pwd.length()字符串长度
.equals(name)比较两次输入的名字是否一致
3、//equalsIgnoreCase()忽略大小写比较
//toLowerCase()转成小写字母,如果后面跟着123,转不了就直接显示,不会报错
//toUpperCase()转成大写字母
public static void main(String[] args) {String s1="abc";String s2="AbC";System.out.println(s1.equals(s2));//比较值---false//equalsIgnoreCase()忽略大小写比较System.out.println(s1.equalsIgnoreCase(s2));//不区分大小写---true//toLowerCase()转成小写字母,如果后面跟着123,转不了就直接显示,不会报错System.out.println(s2.toLowerCase());//toUpperCase()转成大写字母System.out.println(s1.toUpperCase());}
4、concat( ),等同于+号,拼接字符串
public static void main(String[] args) {String a="ab";String b="cd";String c=a.concat(b);//a+bSystem.out.println(c);}
、字符串常用方法


public static void main(String[] args) {String s1="abcdefg";System.out.println(s1.indexOf("c"));//返回下标2System.out.println(s1.indexOf("y"));//没找到返回-1System.out.println(s1.indexOf("bc"));//返回1,返回第一个字母出现的位置System.out.println(s1.indexOf("bd"));System.out.println(s1.indexOf(4));//4是asc码。返回-1;一般使用参数是字符串的System.out.println("---------lastIndexOf---------");String s2="abcabc";System.out.println(s2.lastIndexOf("b"));//4System.out.println(s2.indexOf("b"));//1System.out.println("---------subString----------");String s3="abcabcab";System.out.println(s3.substring(2));//cabcab,从下标2开始从前往后截System.out.println(s3.substring(2, 4));//ca,>=2&&<4System.out.println("-----------trim------------");String s4=" ab cd ";System.out.println(s4.trim());//清空(删除)前后的所有空格System.out.println("-----------replaceAll-------");//将所有空格换成空(清空所有空格)System.out.println(s4.replaceAll(" ", ""));//axcaxcax将字符b替换成xSystem.out.println(s3.replaceAll("b", "x"));System.out.println(s3.replaceAll("ab", "x"));System.out.println("-----------replaceFirst-------");//只替换第一个出现的匹配字符System.out.println(s3.replaceFirst("ab", "x"));System.out.println("-----------tocharArray-------");String s5="abcd";//将字符串转换为char类型的数组char[] sArr=s5.toCharArray();// System.out.println(sArr[2]);//cfor (int i = 0; i < sArr.length; i++) {System.out.println(sArr[i]);}String s6="ab cd ef";//按照特定规则分割成字符串存储到数组String[] sArr2=s6.split(" ");for (int i = 0; i < sArr2.length; i++) {System.out.println(sArr2[i]);}
1、length()和equals()
public static void main(String[] args) {Scanner input=new Scanner(System.in);while(true){System.out.println("请输入用户名:");String name=input.next();System.out.println("请输入密码:");String pwd1=input.next();System.out.println("请再次输入密码:");String pwd2=input.next();if(name.length()>=3&&pwd1.length()>=6){if(pwd1.equals(pwd2)){System.out.println("注册成功");break;}else{System.out.println("两次密码不相同");}}else{System.out.println("用户名长度不能小于3,密码长度不能小于6");}}}
2、concat()拼接字符串
public static void main(String[] args) {String a="ab";String b="cd";String c=a.concat(b);//a+bSystem.out.println(c);}
3、indexOf()寻找字符所在位置
String s1="abcdefg";System.out.println(s1.indexOf("c"));//返回下标2System.out.println(s1.indexOf("y"));//没找到返回-1System.out.println(s1.indexOf("bc"));//返回1,返回第一个字母出现的位置System.out.println(s1.indexOf("bd"));System.out.println(s1.indexOf(4));//4是asc码。返回-1;一般使用参数是字符串的
4、lastIndexOf()找最后一个元素的下标
System.out.println("---------lastIndexOf---------");String s2="abcabc";System.out.println(s2.lastIndexOf("b"));//4System.out.println(s2.indexOf("b"));//1
5、subString()
一个参数,是指从指定位置向后截取
两个参数,是指从第一个参数位置,包括该位置元素,截取到第二个参数位置,不包括第二位置元素
System.out.println("---------subString----------");String s3="abcabcab";System.out.println(s3.substring(2));//cabcab,从下标2开始从前往后截System.out.println(s3.substring(2, 4));//ca,>=2&&<4
6、trim()清空前后所有空格
System.out.println("-----------trim------------");String s4=" ab cd ";System.out.println(s4.trim());//清空(删除)前后的所有空格
7、replaceAll(””,””)将前面参数全部转为后面的参数
System.out.println("-----------replaceAll-------");//将所有空格换成空(清空所有空格)System.out.println(s4.replaceAll(" ", ""));//axcaxcax将字符b替换成xSystem.out.println(s3.replaceAll("b", "x"));System.out.println(s3.replaceAll("ab", "x"));
8、replaceFirst()只替换第一个出现的匹配字符
System.out.println("-----------replaceFirst-------");//只替换第一个出现的匹配字符System.out.println(s3.replaceFirst("ab", "x"));System.out.println("-----------tocharArray-------");
9、toCharArray()
//将字符串转换为char类型的数组
System.out.println("-----------tocharArray-------");String s5="abcd";//将字符串转换为char类型的数组char[] sArr=s5.toCharArray();// System.out.println(sArr[2]);//cfor (int i = 0; i < sArr.length; i++) {System.out.println(sArr[i]);}
10、split(“ “)
按照特定规则分割成字符串存储到数组
String s6="ab cd ef";//按照特定规则分割成字符串存储到数组String[] sArr2=s6.split(" ");for (int i = 0; i < sArr2.length; i++) {System.out.println(sArr2[i]);}
11、给定字符串查找元素的个数
public static void main(String[] args) {//方案一String s="我爱你中国,我爱你故乡!";String key="爱";int count1=0;while(true){int index=s.indexOf(key);if(index>=0){s=s.substring(index+1);count1++;}else{break;}}System.out.println(count1);//方案二String[] sArr=s.split("爱");System.out.println(sArr.length-1);//方案三Scanner input=new Scanner(System.in);System.out.println("请输入一个字符串:");String name=input.next();System.out.println("请输入要查找的字符:");String zf=input.next();String copyname=name;//String copyname2=copyname.replaceAll("爱", " ");char[] array1= name.toCharArray();char[] array2= copyname2.toCharArray();int count=0;for (int i = 0; i < array1.length; i++) {if(array1[i]!=array2[i]){count++;}}System.out.println("“"+name+"”"+"中包含"+count+"个"+"“"+zf+"”");}
12、歌词一行带空格转为多行
public static void main(String[] args) {System.out.println("****原歌词格式******");String word="长亭外 古道边 芳草碧连天 晚风扶柳笛声残 夕阳山外山";System.out.println(word+"\n");System.out.println("****拆分后歌词格式******");//方案一,将空格替换为换行System.out.println(word.replace(" ", "\n"));//方案二String[] a=word.split(" ");for (int i = 0; i < a.length; i++) {System.out.println(a[i]);}}
13、作业提交系统
public static void main(String[] args) {Scanner input=new Scanner(System.in);System.out.println("请输入Java文件名:");String javaName=input.next();//知道最后一个点出现的位置int index=javaName.lastIndexOf(".");//也可以直接截取点后面的所有,javaName.subString(index);if(javaName.substring(index+1, javaName.length()).equals("java")){System.out.println("请输入你的邮箱:");String email=input.next();//email必须含有@和 .;并且@在点之前if(email.indexOf("@")>0&&email.indexOf(".")>email.indexOf("@")){System.out.println("提交成功");}else{System.out.println("邮箱格式不正确");}}else{System.out.println("文件名错误");}//邮箱E-mailString email1="123abc@qq.com";int index1=email1.lastIndexOf("@");int index2=email1.lastIndexOf(".");if(index1>=0&&index2>0){if(index2>index1){System.out.println("正确");}}String word="Hello, ";word=word.trim();String s=word.concat("小鱼儿!");int index3=s.indexOf(",");int index4=s.indexOf("!");//输出小鱼儿System.out.println(s.substring(index3+1, index4));}
14、模拟压缩
/*** 模拟压缩* aaabbbcdddee-->a3b3cd3e2* @param args*/public static void main(String[] args) {Scanner input=new Scanner(System.in);System.out.println("请输入字符串:");String strName=input.next();char[] strName1=strName.toCharArray();int count=1;String result="";for (int i = 0; i < strName1.length-1; i++) {if(strName1[i]==strName1[i+1]){count++;}else{result=result+strName1[i]+count;count=1;}}result=result+strName1[strName1.length-1]+count;System.out.println(result);}
15、模拟解压
/*** 模拟解压* a3b3cd3e2-->aaabbbcdddee* char型到int型要转换Integer.pas+""*/public static void main(String[] args) {Scanner input=new Scanner(System.in);System.out.println("请输入压缩字符串:");String a=input.next();char[] x=a.toCharArray();String str="";for (int i = 1; i < x.length; i=i+2) {//取数字部分for (int j = 0; j < Integer.parseInt(x[i]+""); j++) {//将x[i]转换成int型str=str+x[i-1];}}System.out.println(str);}
16、统计字符串数字个数,摘取,排序
/*** 统计字符串中的数字个数* "abc1d3c4v2v14"==>输出6* ===>输出数字,(不重复)134214* ===>输出数字(不重复),从小到大按顺序输出* @param args*/public static void main(String[] args) {String s="abc1d3c4v2v14";char[] sArr=s.toCharArray();int count=0;Set<String> set=new HashSet<String>();for (int i = 0; i < sArr.length; i++) {if(sArr[i]>'0'&&sArr[i]<'9'){//sArr[i]字符型,而里面数字的asc码只能是0-9count++;set.add(sArr[i]+"");}}System.out.println(count);System.out.println("--------------------");for (String s1 : set) {System.out.println(s1);}System.out.println("-----------------");List<String> list=new ArrayList<String>(set);Collections.sort(list);for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}
17、逆序输出:i am groot 逆置为:groot am i
/*** 逆序输出:i am groot 逆置为:groot am i*/public static void main(String[] args) {String s="i am groot";String[] sArr=s.split(" ");for (int i = sArr.length-1; i >=0 ; i--) {if(i!=0){System.out.print(sArr[i]+" ");}else{System.out.print(sArr[i]);}}System.out.println("\n"+"---------------");char[] sArr1=s.toCharArray();for (int i = sArr1.length-1; i >=0 ; i--) {System.out.print(sArr1[i]);}}
18、To be or not to be”,将变成”oT eb ro ton ot eb.”
/*** "To be or not to be",将变成"oT eb ro ton ot eb."。*/public static void main(String[] args) {String s="To be or not to be";String result="";String[] sArr=s.split(" ");for (int i = 0; i < sArr.length; i++) {String s1=sArr[i];char[] cArr=s1.toCharArray();result+=" ";for (int j = cArr.length-1; j >=0; j--) {result=result+cArr[j];}}System.out.println(result.replaceFirst(" ", ""));// String s1="";// char[] sArr=s.toCharArray();// for (int i = sArr.length-1; i >=0 ; i--) {// s1+=sArr[i]+"";// }// String[] sArr1=s1.split(" ");// for (int i = sArr1.length-1; i >=0 ; i--) {// if(i!=0){// System.out.print(sArr1[i]+" ");// }else{// System.out.print(sArr1[i]);// }//// }}
19、示例 1 输入: 123 输出: 321
/*** 示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21*/public static void main(String[] args) {Scanner input=new Scanner(System.in);System.out.println("请输入数字:");int num=input.nextInt();int a=0;while(num!=0){int b=num%10;//取最后一位a=a*10+b;num=num/10;}System.out.println(a);}
20、给定数组和一个数,寻找数组中2个数的和
4种方法
/*** 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。* 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。* 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]*/public static void main(String[] args) {int[] a={2,7,11,15,3,7,5,15};int target=14;a:for (int i = 0; i < a.length; i++) {for (int j = i+1; j < a.length; j++) {if(a[i]+a[j]==target){System.out.println("["+i+","+j+"]");break a;}}}Test8 t8=new Test8();int[] b={2,2,1,5,4,3,7,8};int target1=9;int[] result=t8.sum1(b, target1);for (int i : result) {System.out.print(i+",");}}public int[] sum1(int[] b,int target1){int[] result={0,0};for (int i = 0; i < b.length; i++) {for (int j = i+1; j < b.length; j++) {if(b[i]+b[j]==target1){result[0]=i;result[1]=j;return result;}}}return result;}public int[] sum2(int[] a,int target){int[] result = {0,0};Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 0; i < a.length;i++) {map.put(a[i], i);}for (int i = 0; i < a.length;i++) {int res = target - a[i];if (map.containsKey(res)) {int j = map.get(res);result[0] = i;result[1] = j;return result;}}return result;}public int[] sum3(int[] a,int target){int[] result={0,0};Map<Integer,Integer> map=new HashMap<Integer,Integer>();for (int i = 0; i < a.length; i++) {int res=target-a[i];if(map.containsKey(res)){//找指定的keyint j=map.get(res);result[0] = i;result[1] = j;return result;}map.put(a[i], i);}return result;}
六、StringBuffer和stringBuilder
1、举例说明String和buffer和builder的效率,拼接字符串时效率不同,StringBuilder>StringBuffer>String
/*** String StringBuffer StringBuilder三者的区别* 1、拼接字符串时效率不同,StringBuilder>StringBuffer>String**/public static void main(String[] args) {//比较String和Stringbuffer的效率String s="";long start1=System.currentTimeMillis();for (int i = 0; i < 20000; i++) {s+=i;}long end1=System.currentTimeMillis();System.out.println("String拼接字符串耗时="+(end1-start1));System.out.println("=======================");long start2=System.currentTimeMillis();StringBuffer sbu=new StringBuffer();for (int i = 0; i < 20000; i++) {//append()追加字符串sbu.append(i);}long end2=System.currentTimeMillis();System.out.println("StringBuffer拼接字符串耗时="+(end2-start2));System.out.println("==================================");long start3=System.currentTimeMillis();StringBuilder sbu2=new StringBuilder();for (int i = 0; i < 20000; i++) {//append()追加字符串sbu2.append(i);}long end3=System.currentTimeMillis();System.out.println("StringBuilder拼接字符串耗时="+(end3-start3));}
2、三者区别,除了第一点,还有String是不可变对象,每次改变都要生成新的String对象,处理效率慢,如果遇到经常改变内容的字符串最好不要用;StringBuffer和StringBuilder都是可变的字符串,StringBuffer进行改变时,不生成新的对象,所以效率比String高一点,理论上StringBuilder效率会更高,但是StringBuffer类线程是安全的,而StringBuilder是单线程的;
3、append();追加字符串
StringBuilder sbu2=new StringBuilder();
sbu2.append(i);
4、 insert()
5、reverse()
反转字符串,倒着输出
6、举例
public static void main(String[] args) {StringBuffer sbu=new StringBuffer("abc");//在指定的索引位置前插入数据sbu.insert(1, "Y");System.out.println(sbu);//reverse()反转字符串,倒着输出StringBuffer sb1=sbu.reverse();System.out.println(sb1);}
7、String StringBuffer相互转换
//StringBuffer-->Stringpublic String sbuToString(StringBuffer sbu){return sbu.toString();}//String-->StringBufferpublic StringBuffer stringToSbu(String s){return new StringBuffer(s);}
8、练习 ,1,000,000,000
public static void main(String[] args) {Scanner input=new Scanner (System.in);System.out.println("请输入一串数字:");String nums=input.next();StringBuffer sb=new StringBuffer(nums);//从后往前,每隔三个插入一个,号for (int i = sb.length()-3; i>0; i-=3) {sb.insert(i, ",");}System.out.println(sb);//去掉,号String s1=sb.toString();String s2=s1.replaceAll(",", "");System.out.println(s2);
七、日期操作类
1、当前时间
//当前时间
Date date=new Date();
System.out.println(date);
2、日期格式化
SimpleDateFormat
日期—->字符串
public static void main(String[] args) {T4 t4=new T4();Date date=new Date();String s =t4.dateToString(date);System.out.println("当前时间为:"+s);}private String dateToString(Date date) {//日期的格式化SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒sss毫秒E");return sdf.format(date);//format(d)日期变成字符串}
字符串—->日期
public static void main(String[] args) {String s="2021-03-11 15:00:00";Date d=null;try {d=t1.stringToDate(s);} catch (ParseException e) {e.printStackTrace();}System.out.println(d);}/** 字符串转日期*/public Date stringToDate(String s) throws ParseException{SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//解析,手动添加处理异常return sdf.parse(s);//parse(s)字符串转日期}
3、设置年月日
//如果只设置一个年份,其他月份日子输出时都沿用当时操作的日期值
public static void main(String[] args) {Calendar cal=Calendar.getInstance();//设置日期,因为是静态常量,所以类名.直接就行cal.set(Calendar.YEAR, 2015);//月份设置,5显示6月cal.set(Calendar.MONTH, 3);cal.set(Calendar.DATE, 6);cal.set(Calendar.HOUR_OF_DAY, 15);cal.set(Calendar.MINUTE, 14);cal.set(Calendar.SECOND, 59);//设置年份,其他沿用当前时间Date d=cal.getTime();System.out.println(d);SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(sdf.format(d));}
4、算星期几或者在第几周
public static void main(String[] args) {int i=cal.get(Calendar.DAY_OF_WEEK);System.out.println(i);//6--->星期五、2-->星期一int i1=cal.get(Calendar.WEEK_OF_YEAR);System.out.println(i1);//一年中的第几个星期}
5、2015-04-06是第几个星期
public static void main(String[] args) {String date="2015-04-06";Calendar cal=Calendar.getInstance();//一周的第一天是周一cal.setFirstDayOfWeek(Calendar.MONDAY);SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");Date d=null;try {d=format.parse(date);} catch (ParseException e) {e.printStackTrace();}cal.setTime(d);int week=cal.get(Calendar.WEEK_OF_YEAR);System.out.println("2015年4月6号是第"+week+"个星期");}
