JAVA基础

一、JAVA基础

1、一个源文件可以有多个类但是最多只能有一个public的类,也可以没有public的类。而且申明为public的这个类必须与该文件名相同,可以用

java.exe执行的class文件必须有main方法

2、文档注释可以被javadoc命令解析/**  */

3、java命名

  规则

①有26个字母大小写,数字0-9,_或$组成
②数字不可以开头
③严格区分大小写,长度无限制
④命名中不能包含空格

规范:

①包名:所有字母都小写

②类名、接口名:多单词组成时,所有单词的首字母大写

③变量名、方法名:多单词组成时,第一个单词的首字母小写,其余单词的首字母大写

④常量:所有字母都大写,多单词用下划线分割

4、8个基本数据类型

byte(1字节)、short(2字节)、int(4字节)、long(8字节末尾要加L或l)、float(4字节末尾要加F或f)、double(8字节)、boolean(只能取值true和false)、char(2字节每一个char类型的值对应一个unicode值,可以这样表示char a = '\u1234';)
基本数据类型都不能取值为null
char与unicode是一一对应的(这个不准确,看参考文献)这里要注意:java的char类型是用(UTF-16BE编码的),并不是UTF-8。
字符串在java内存中总是按unicode编码存储,unicode不便于传输和存储,所以要用utf-8进行传输与存储

5、整型默认类型int、浮点型默认类型double

6、自动类型转换(byte,short,char-->int-->long-->float-->double)(boolean不参与)

7、强制类型转换,加小括号指名要转换后的类型

8、整数进制:二进制以0b或0B开头,八进制以0开头,十六进制以0x或0X开头

9、负数的补码、源码和反码运算时符号位不变,补码=源码取反+1(不包括符号位),源码=补码取反+1(不包括符号位),补码+源码=运算位全1再加1(不包括符号位)

10、JDK>JRE>JVM(jvm和os强耦合)

二、java运算符和运算顺序

1、算术运算和赋值运算的区别:对于short来说(short a = 10; (1)a+=1; (2)a=(short)(a+1))(int i=1;(1)i*=0.1;(2)i=(int)(i*0.1));从这

里可以看出算术运算和赋值运算不一样

2、逻辑运算:&与、&&短路与、|或、||短路或、!非、异或^  (一般会用短路与和短路或)
3、移位运算:左移<<、无符号右移>>>(最高位补0)、有符号右移>>(最高位补的位与符号位相同)、&位与、|位或、^位异或、~按位取反
4、(|、&、^)这三个运算符既是逻辑运算符也是移位运算符
5、比较运算符:== > < >= <= instanceof
6、三元运算符:三元运算符允许嵌套
7、运算符的优先级

  ①算术运算符优先级(*,/,%)>(+,-)> 移位运算符

  ②比较运算符里面==,!=是优先级最低的

  ③逻辑运算符&>^>|>&&>||

  ④赋值运算符(=,*=,/=,%=)>(+=,-=,<<=,>>=)>(>>>=,&=,^=,|=)

  ⑤分隔符运算顺序.>[]>()

instanceof运算符:

  ①用于判断某个实例是否属于某个类型

  ②这个类型可以是实例父类的类型。例如:a instanceof Object结果是永远都为true的;null instanceof Object 这个的结果为false

8、基本数据类型不能转换为String类型,要通过连接符"+"或者函数才能转换为String类型,字符串和基本数据类型之间只能是连接运算(+),但不能进行类型转换。

9、取模运算时被摸数和模数必须是整数,结果的符号取决于被摸数。

三、java的流程结构(for循环,增强for循环,Iterator)

1、switch case break default语句:支持的数据类型有6种(byte、short、int、char、String、enum)。default语句的位置可以随意,但是总是最后匹配。下图说明case语句冒号后面是可以什么也不写的。

     int a = 8;
        switch(a) {
            case 8:
            case 7:
            case 9:
                System.out.println(a);
                break;
        }

 

2、下面看一下java的标号,continue和break都可以利用(标号)来跳出多重循环

复制代码
        flag:for(int i=0;i<10;i++){
            for(int j=0;j<10;j++){
                if(j==5){
                    //continue la;
                    break flag;
                }
                System.out.println(i+":"+j);
            }
        }
复制代码


3、if else分支结构中,最多只有一个分支执行

4、增强for循环

集合变量可以是数组或者实现了iterable接口的集合类

5、  for(final i:is)这里的final修饰符可以防止变量被改变

四、java中的数组

1、一维数组

数组的长度是可以定义为0的,例如:int[] arr = new int[0];

数组的长度一开始就要指定好,数组一旦初始化以后,其长度是不可以变的。
①静态初始化:String[] names = new String[]{"a","b","c"};
②动态初始化: int ages = new int[4];
数组的长度用数组的length属性来表示,给数组赋值为null,这个时候数组是不能使用length属性的。

元素是List的数组:(是泛型数组吗?)

List<String>[] atty = new List[26];
        for(int i =0;i<26;++i){
            atty[i] = new ArrayList<>();
        }

还是

public static <T extends Comparable<T>> void sort(List<T> arr) {
        T[] att = new T[1];//错误
    }

 

 

2、二维数组

①静态初始化:int[][] num = new int[][]{{1,2,3},{4,5,6},{7,8}};
②动态初始化:方式一:int[][] num = new int[3][2];

                          方式二:int[][] n = new int[3][];
                                     n[0] = new int[2];
                                     n[1] = new int[3];
                                     n[2] = new int[4];
                          动态初始化前的数组里面是有默认值的。

五、java的传递机制

值传递

六、关于匿名

①匿名类对象(Person a = new Person();和new Person()的对比);就是没有名字只能用一次。

②接口的匿名类的对象

③匿名的局部内部类的对象

七、JAVA的import和(import static)

  import导入类和接口

  import static导入类的静态属性和静态的方法

  import xx.yy.* 导入的时候是不包含子包的,只能引入当前包下面的所有类

八、类与类之间的关系

  关联关系

  继承关系

  聚集关系

  组合关系

参考文献

java的char编码够吗?:https://blog.csdn.net/nlznlz/article/details/80950596

posted @ 2018-12-16 20:37  海平面下的我们  阅读(237)  评论(0编辑  收藏  举报