zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    windows+vs2017+C语言 引入mysql.h对MYSQL数据库的操作
    开发依赖和运行依赖
    vue-cli 如何修改或删除预设preset记录
    git stash 缓存本地修改 简介
    DWZ 框架详解
    vue 脚手架(二,项目依赖说明 package.json)
    vue 脚手架(一,创建脚手架)
    JavaScript Number() Vs new Number()
    Flex 布局的各属性取值解释
    mysql explain extended 查看 执行计划
  • 原文地址:https://www.cnblogs.com/erdanyang/p/10127931.html
Copyright © 2011-2022 走看看