Java - 基础篇

版权声明: https://blog.csdn.net/Dream_Weave/article/details/80578781
  1. print \ println \ printf 区别:
    print、println:都不能格式化输出,前者无换行,后者末尾换行。
    printf:格式化输出,类似C。
  2. JDK、JRE、JVM 关系:运行只需JRE即可,比如发布的时候;开发编译需要JDK。


  3. 系统环境变量:把指定的目录配置到环境变量,可以不用切换到指定的盘符就可以直接打开或者操作文件。
  4. 在IDE中,保存Java文件就是一个编译的过程。
  5. Java 程序执行过程
  6. 带命令参数的 Java
  7. Java 编译运行原理:
    编译:javac 文件名.java // javac 命令是将.java文件翻译成字节码文件(.class)
    运行:java 文件名 // java 命令是使 JVM 运行字节码文件
    Ps:若java命令错误:找不到或无法加载主类文件名,则 set classpath=D:\test // 设置JVM类路径


  8. 数据类型
  9. 基本数据类型
  10. 变量名的命名规范:
    符合驼峰法命名规范(即:一个单词全小写;多个单词从第二个单词开始,每个首字母大写)。
  11. 类的命名规范:
    符合Pascal(帕斯卡)命名法规范(即:一个单词首字母大写;多个单词从第一个单词开始,每个首字母大写)。
  12. 标识符命名规则:
  13. 八进制 & 十六进制
  14. 变量:
    //		int a=1.1; // 编译错误,数据类型不匹配,不会自动转换,因为自动转换是从小到大兼容
    		
    //		int b;
    //		System.out.println(b); // 编译错误,b没有初始化,不会输出随机值
    		
    //		long b=10000000000; // 编译错误,右边的 100 亿默认为 int 类型,但超出 int 范围了,所以会报错,表示 long 需要加 L
    		
    //		System.out.println('A'+'B'); // 131,而不是"AB"
    
    // 定义一个汉字的字符
    char a='我';
    System.out.println(a); // 我
    
    // 不建议中文作为变量名
    char 中文='中';
    System.out.println(中文); // 中
    
    double d=1.23e5; // 123000.0
    float f=1.23E5f; // 123000.0
    double d1=.2;    // 0.2
    float f1=1.2;    // CE
    double d2=1.23f; // 1.2300000190734863
    double d3=123L;  // 123.0  
    Ps:long < double (即使long和double都是8字节)(double是在基本数据类型中最大的类型)
    
    char c='\u005d'; // Unicode表示法,在值前加前缀"\u",后面跟着16进制
    
    if(1==true){} 	    // CE
    else if(0==false){} // CE
    
    // 字符串不属于基本数据类型,它是类!
    
  15. 常量(或称为字面值)
    常量命名规范:每个单词都大写,单词之间用一个下划线隔开。
  16. 浮点型
  17. 运算中的数据类型:
    // 运算中的数据类型:
    int a=Integer.MAX_VALUE, b=Integer.MAX_VALUE;
    long rs1=(long)a+(long)b; // 运算中的数据类型:long
    long rs2=a+(long)b; // 运算中的数据类型:long
    long rs3=(long)(a+b); // 运算中的数据类型:int
    long rs4=a+b; // 运算中的数据类型:int
    System.out.println(rs1);
    System.out.println(rs2);
    System.out.println(rs3);
    System.out.println(rs4);
    		
    short s1=30000;
    short s2=10000;
    short s3=(short)(s1+s2); // s1 和 s2 先转换成 int 类型在进行运算
  18. 数据类型强制转换(箭头反方向意味着强制类型转换)(实线一定不会有精度丢失,虚线可能会造成精度丢失):
    // 强制转换:
    long c=10000000000L; // 100亿
    int rs5=(int)c; // 强转可能发生溢出
    System.out.println(rs5); // 1410065408
    
    double d=56.89895514545787878;
    int i=(int)d;
    float f=(float)d;
    System.out.println(i); // 56
    System.out.println(f); // 56.898956
    
    // 对于一个变量进行数据类型转换是取决于该变量的数据类型而不是该变量的值。
  19. 运算符:
    System.out.println(-1%10); // 是 -1,而不是 9
  20. 父类与子类继承调用方法关系:点击打开链接
  21. Java - try、catch、finally(包含 return):点击打开链接
  22. 函数参数传递:
    i、传值:byte、short、int、char、float、double、boolean、String(特殊对象);
    ii、引用:数组、对象(除了上文的String对象)。
  23. Java - 装箱 / 拆箱:点击打开链接
  24. Java 重载函数 + 类型转换调用:
    	// char -> int -> long -> float -> double -> Character
    	// int -> long -> float -> double -> Integer
    	// boolean -> Boolean
    	// byte、short、long、float、double 同理可得
  25. 方法签名 == 方法名 + 参数列表
  26. final的类不能被重写和继承,而abstract的类是抽象类,本身没有实现,只能通过子类来实现,也就是说必须被继承。所以说它们是没法同时做修饰符的。
  27. indexOf()、lastIndexOf():(匹配不上一律返回 -1,一个汉字算一个下标)
    indexOf() // 第二个参数(从0开始):从该位置开始匹配(包括该位置)
    lastIndexOf() // 第二个参数(从0开始):匹配截至到该位置(包括该位置)
  28. 若局部变量没有初始化,则无法拿来使用。
  29. “+=” 与 “普通+” 区别:
    byte a=1;
    a+=2; // T,因为 “+=” 底层自带强制转换功能
    a=a+2; // F,因为byte计算前先转换为int类型
  30. Java 与 C/C++ 语法区别:
  31. 1、a=1, b=2; // Java 编译错误; C/C++ 支持
    
    2、Java 中变量如果没有被初始化,则使用该变量报编译错误;而不像 C/C++ 可以使用输出随机值。
    
    3、输出语句里面的运算从左往右,C/C++是从右往左
    int a=1;
    System.out.println(a+","+(++a)); // Java - 1,2;  C/C++ - 2,2

    连接运算 & 加法运算

    int a=1,b=2;
    System.out.println(a+'\n'+b); 		// 13
    System.out.println(a+"\n"+b); 		// 1\n2
    System.out.println(""+a+'\n'+b); 	// 1\n2
    System.out.println(a+'\n'+b+""); 	// 13
  32. Ascii码 & Unicode码

    a、标准ASCII码表示大小写字母、标点符号、美式英语中的控制字符等。
    b、扩展ASCII码表示特殊符号,外来语言的字母等。
    c、ASCII码不能支持所有的语言;Unicode编码又称为统一码、万国码;Unicode编码的目标是支持世界上所有的字符集。

  33. 局部变量在内存中的存储(方法级变量又称局部变量)

  34. 表达式(组成:可以没有运算符,如:5,num1)

  35. 运算符:

    int a=4;
    int b=(a++)+5; // 9
    Ps:不要被括号迷惑了,误以为先算括号里的。
    
    注意:赋值运算符是从右往左运算!
    
    System.out.println(13.5%5); // 3.5
    
    int a=1;
    System.out.println(a+","+(++a)); // 1,2 // 输出语句里面的运算从左往右,C/C++是从右往左
    
    System.out.println(""+(1<2)); // 因为优先级的问题,关系运算符必须括号起来
  36. && 和 &;|| 和 | 区别:前者都属于短路逻辑运算符,后者属于普通逻辑运算符。

  37. 运算符优先级

  38. switch 结构:JDK7.0以后表达式的值可以是基本数据类型的byte,short,int,char,以及String类型。

  39. Code

    1、for(int i=1;;i++){} // 死循环
  40. API

    1、Math.random( ); // 得到[0,1)之间的随机数
  41. 数组

    int arr[]=new int[10];
    int len=arr.length; // 10,length是绝对没有括号的
    
    1、int类型定义的数组,初始化默认是0
    2、String类型或对象类型定义的数组,默认值是null
    3、char类型定义的数组,默认值是0对应的字符('\0')(空字符)
    4、double类型定义的数组,默认值是0.0
    5、float类型定义的数组,默认值是0.0
  42. 循环

  43. 方法
    a、重载:方法名相同,参数列表不同(与返回类型和访问修饰符无关)。
    b、参数传值:基本数据类型 + String类型。
    c、参数传址:数组 + 对象。

  44. 可变参数列表

    public void foo(int a, int... n){} // 1
    
    public void foo(int a, int[] n){}  // 2
    
    foo(3,1,2,3,4); // 可以调用1 而不能调用2
    
    1、>=0个参数。
    
    2、在方法定义1、2中,认为当前的两个方法重复定义,而不是重载!
    
    3、参数列表中如果有两个以上的参数,可变参数一定是在最后的!
    
    4、可以将数组传递给可变参数列表(即数组和可变参数列表兼容的)。
    
    5、数组作为参数时,是不能将多个值传递给数组的!
    
    6、一个方法中最多只能有一个可变参数。
    
    7、在方法重载的问题中,可变参数列表所在的方法是最后被访问的。
  45. 文档注释内容 和 生成html api文档(cmd 中 javadoc.exe,类似 javac / java)

    /**
     * 文档注释内容,下面“@”出来的是参数
     * @author Lux Sun
     * @version 1.0
     */
  46. Java - 集合容器

  47. 待更新...

猜你喜欢

转载自blog.csdn.net/Dream_Weave/article/details/80578781