----------break----------
package java_basic;
public class java_break {
public static void main(String[] args) {
m1();
m2();
}//m
private static void m2() {
for (int i = 0; i < 10; i++) {
if (i == 5) {
System.out.println("i==5");
break;
}
System.out.println("--");
}
}//m
public static void m1() {
// test:
System.out.println("test_break::");
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 6; j++) {
if (i == 4)
break;
if (j == 3)
break;
System.out.println("i: " + i + " j: " + j);
}
}
}//m
}//c
// 结论 跳出最近一层的循环
-------------------char-------------------------
package java_basic;
public class java_char {
/**
* @param args
*/
public static void main(String[] args) {
fun1();
System.out.println();
fun2();
}
private static void fun2() {
char c = '7';
// if( c=='+' || c=='-' || ('0'<= c<='9') ){
if (c == '+' || c == '-' || '0' <= c || c <= '9') {
System.out.println("yes");
}
}
public static void fun1() {
System.out.println("0");
System.out.println('0');
System.out.println('1');
System.out.println('A');
System.out.println('a');
System.out.println();
int a = '0';
int a2 = 'A';
int a3 = 'a';
System.out.println(a);
System.out.println(a2);
System.out.println(a3);
}
}
-------------------comparable-------------------------
package java_basic;
import java.util.ArrayList;
import java.util.List;
//??????????????
public class java_Comparable {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("a", 2));
personList.add(new Person("b", 4));
personList.add(new Person("c", 7));
// 升序
personList.sort(Comparator.comparingInt(Person::getAge)); /?????????????????
// 降序
personList.sort(Comparator.comparingInt(Person::getAge).reversed());
System.out.println(personList);
}
public static class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public Integer getAge() {
return age;
}
// ... toString 方法
}
}
-------------------comparator------------------------
package java_basic;
import java.util.Arrays;
import java.util.List;
import java.util.Comparator;
//??????????????
public class java_Comparator {
/**
* @param args
*/
public static void main(String[] args) {
}
private void fun1(){
// 对整数列表排序(升序)
List<Integer> list = Arrays.asList(1, 4, 2, 6, 2, 8);
list.sort(Comparator.naturalOrder()); // 有错误,是不是因为用jdk1.7???
System.out.println(list);
// 对整数列表排序(降序)
List<Integer> list = Arrays.asList(1, 4, 2, 6, 2, 8);
list.sort(Comparator.reverseOrder());
System.out.println(list);
}
}//c
-------------------double-------------------
package java_basic;
public class java_double {
/**
* @param args
*/
public static void main(String[] args) {
test_double();
}//m
private static void test_double() {
int a=1;
int b=2;
double c1=(a+b)/2;
double c2=(double)(a+b)/2;
System.out.println(c1);
System.out.println(c2);
}//m2
}
-------------------equals-------------------
package java_basic;
public class java_equals {
public static void main(String[] args) {
System.out.println("1:");
fun1();
System.out.println("2:");
fun2();
System.out.println("\n lettcode实际遇到问题:");
fun3();
}
private static void fun3() {
String s = "MMMCMXCIX";// 3999
String[] romanNum = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
int[] intNum = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
// ==??
String str0 = "M";
System.out.println(romanNum[0]);
System.out.println(str0);
System.out.println(s.substring(0, 1));
System.out.println();
// Object的hashCode()默认是返回内存地址的,但是hashCode()可以重写,所以hashCode()不能代表内存地址的不同
// System.identityHashCode(Object)方法可以返回对象的内存地址,不管该对象的类是否重写了hashCode()方法。
System.out.println("M".hashCode());
System.out.println(romanNum[0].hashCode());
System.out.println(str0.hashCode());
System.out.println(s.substring(0, 1).hashCode());
System.out.println();
System.out.println(System.identityHashCode("M"));
System.out.println(System.identityHashCode(romanNum[0]));
System.out.println(System.identityHashCode(str0));
System.out.println(System.identityHashCode(s.substring(0, 1)));
System.out.println();
System.out.println(str0 == "M");
System.out.println(romanNum[0] == str0);
System.out.println(romanNum[0] == "M");//????
System.out.println(romanNum[0] == s.substring(0, 1)); // 很严重的错误!!!string比较不用==,用equeals!!!!!!!
System.out.println();
//当使用x.substring(1,3)对x赋值的时候,它会指向一个全新的字符串. 当调用substring方法的时候,会创建一个新的string对象,
System.out.println(s.substring(0, 1) == "M");
System.out.println(s.substring(0, 1) == str0);
System.out.println(s.substring(0, 1) == romanNum[0]);
System.out.println();
System.out.println(romanNum[0].equals(s.substring(0, 1)));
System.out.println(romanNum[0].equals("M"));
System.out.println(romanNum[0].equals(str0));
}
// Java中equals和==的区别
// java中的数据类型,可分为两类:
// 1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
// 他们之间的比较,应用双等号(==),比较的是他们的值。
// 2.复合数据类型(类)
// 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,
// 否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,
// 这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,
// 而不再是比较类在堆内存中的存放地址了。
// 对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,
// 因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
public static void fun1() {
String s1 = "Monday";
String s2 = "Monday";
System.out.println(System.identityHashCode(s1));
System.out.println(System.identityHashCode(s2));
System.out.println(System.identityHashCode("Monday"));
if (s1 == s2) {
System.out.println("s1 == s2");
} else {
System.out.println("s1 != s2");
}
}
public static void fun2() {
String s1 = "Monday";
String s2 = new String("Monday");
System.out.println(System.identityHashCode(s1));
System.out.println(System.identityHashCode(s2));// 果然,new了一个,地址就不一样了
System.out.println(System.identityHashCode("Monday"));
if (s1 == s2) {
System.out.println("s1 == s2");
} else {
System.out.println("s1 != s2");
}
if (s1.equals(s2)) {
System.out.println("s1 equals s2");
} else {
System.out.println("s1 not equals s2");
}
}//fun2
// 将s2用new操作符创建
// 程序输出:
// s1 != s2
// s1 equals s2
// 说明:s1 s2分别引用了两个"Monday"String对象
}//c
-------------------for-------------------
package java_basic;
public class java_for {
public static void main(String[] a) {
m1();
System.out.println();
m2();
}
private static void m2() {
int i=0;
for(i=0;i<10;i++){
}
System.out.println(i);// 出了这个循环 ,变成了10
}
private static void m1() {
int i=0;
for(i=0;i<10;i++){
if(i==5)
break;
}
System.out.println(i);
}
}
-------------------getBytes-------------------
package java_basic;
public class java_getBytes {
public static void main(String args[]) throws Exception {
String str = "中文字符";
System.out.println("original string---" + str);// 会正常输出原始串
/**
*
* str.getBytes(); 如果括号中不写charset,则采用的是Sytem.getProperty("file.encoding"),即当前文件的编码方式,
* 很多人写的是系统的默认编码,通过代码测试并非如此,实际得到的是文件的编码方式*
* str.getBytes("charset");//指定charset,即将底层存储的Unicode码解析为charset编码格式的字节数组方式
* String new_str=new String(str.getBytes("utf-8"),"gbk"));
* //将已经解析出来的字节数据转化为gbk编码格式的字符串,在内存中即为gbk格式的字节数组转为Unicode去交互传递
*/
String new_str_gbk = new String(str.getBytes("utf-8"), "gbk");
System.out.println("new_str_gbk----" + new_str_gbk);
/**
* 此时的输出是乱码,在UTF-8的file.encoding下输出gbk格式的数据肯定是乱码,但是new_str的确是gbk编码式的
* 此时的乱码源于encoding不符,但gbk格式的new_str本身数据并没有问题,通过下面的转换也可以看得出来
*/
String new_str_ios88591 = new String(str.getBytes("utf-8"), "ISO-8859-1");
System.out.println("new_str_ios88591---" + new_str_ios88591);
/**
*输出是正常的,此时将gbk编码格式的new_str字符串,用gbk这个charset去解析它,然后用utf-8再转码一次,
* 因为new_str确实是gbk格式的,才能经过utf-8编码得到正常的数据显示。
*/
String final_str = new String(new_str_gbk.getBytes("gbk"), "utf-8");// 此处的含意与最上边的注释是一致的参数含意
System.out.println("final_str---" + final_str);
// 在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同OS下,返回的东西不一样!
// String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如:
//
// Java代码 收藏代码
// byte[] b_gbk = "深".getBytes("GBK");
// byte[] b_utf8 = "深".getBytes("UTF-8");
// byte[] b_iso88591 = "深".getBytes("ISO8859-1");
// byte[] b_unicode = "深".getBytes("unicode");
// 将分别返回“深”这个汉字在GBK、UTF-8、ISO8859-1和unicode编码下的byte数组表示,
// 此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1,unicode为4。
//
// 而与getBytes相对的,可以通过new String(byte[], decode)的方式来还原这个“深”字时,
// 这个new String(byte[], decode)实际是使用decode指定的编码来将byte[]解析成字符串。
}
}
-------------------Integer-------------------
package java_basic;
public class java_Integer {
/**
* @param args
*/
public static void main(String[] args) {
int i = 123456;
// int--->String--->Integer-->int
String i2=String.valueOf(i+100); // string valueof 函数 返回String类型 ,,
System.out.println(i-(int)Integer.parseInt( i2));
}
}
----------------------------------------------------