美文网首页
java基础语法

java基础语法

作者: 上炼致知 | 来源:发表于2018-12-04 23:38 被阅读0次

    关键字

    指赋予特殊含义,具有专门用途的单词,如class、int、static、void等。

    标志符

    就是给类、接口、方法、变量等起的名字。

    组成规则:a~z、A~Z、0~9、$、_ 不能以数字开头,不可以使用关键字。

      (必须以字母、下划线、或$符号开头,不能用数字开头)
    命名规则:
      a.包名:多单词组成时,所有字母小写,使用点号连接,如aaa.bbb.ccc
      b.类名或接口名:大驼峰式,如AaaBbbCcc
      c.变量名或方法名:小驼峰式,如aaaBbbCcc
      d.常量名:多单词组成时所有字母大写,使用下划线连接,如AAA_BBB_CCC

    常量:

    常量就是不变的数据量,执行过程中值不变。

    数据类型:

    Java语言是强类型语言
    基本数据类型:
      整数(byte、short、int、long)
      小数(float、double)
      字符(char)
      布尔(boolean)
    引用数据类型:
      强大的数据类型,基于基本数据类型创建。

    整数不同进制表示法:

      a.十进制:正常数字,如12,25
      b.二进制:以0b(0B)开头,如0b1011、0B1001
      c.十六进制:以0x(0X)开头,由0~9和A~F组成,如0x23A2、0xa、0x10
      d.八进制:以0开头,如01、0721

    字符和字符串简单区别:

      字符:字符必须使用' '(单引号)括起来,并且必须包含且只能包含一个字符
      字符串:字符串是一种引用类型,必须使用""(双引号)括起来,其中可以包含0~N哥字符

    基本类型(4类8种):
    四类 八种 字节数 数据表示范围
    整型 byte 1 -128~127
    整型 short 2 -32768~32767
    整型 int 4
    整型 long 8
    浮点型 float 4
    浮点型 double 8
    字符型 char 2 表示一个字符,如'a'、'A'
    布尔型 boolean 1 只有两个值true和false

    java中默认的整数类型是int
    java中默认的浮点类型是double

    数据类型转换(两种方式):

    自动类型转换:范围小的数据类型转换成范围大的数据类型

    double d = 100;
    或
    int i = 100;
    double d2 = i;
    

    强制类型转换:范围大的数据类型转换成范围小的数据类型

    int i = (int) 6.718;
    或
    double d = 3.14;
    int i2 = (int)d;
    

    Scanner类
    ​ Scanner类是引用数据类型的一种,Scanner使用步骤如下:

    //创建Scanner引用类型的变量
    Scanner sc = new Scanner(System.in);
    //获取数字
    int n = sc.nextInt();
    //获取字符串
    String str = sc.next();
    

    随机数类Random
    ​ 用来产生随机数的类Random,也是引用数据类型,使用如下:

    //创建Random类的实例
    Random r = new Random();
    //得到0~100(不包含100)范围内的随机整数
    int i = r.nextInt(100);
    //得到0.0~1.0(不包含1.0)范围内的随机小数
    double d = r.nextDouble()
    
    最简单的无限循环:

    while(ture){}for(;;){}

    跳转语句(break、continue)
    1、break

    ​ break用在switch条件语句中时,作用是终止某个case并跳出switch;
    ​ break用在循环语句中时,作用是跳出循环语句,执行后面的代码;

    2、标记

    ​ 当break出现在嵌套循环中的内存循环时,它只能跳出内层循环。如果想使用break语句跳出外层循环则 需要对外层循环添加标记。

    itcast:
    for (int i = 0; i <= 9; i++) { //外层循环
        for (int j = 0; j <= i; j++) {  //内层循环
            if (i > 4) {
                break itcast;   //跳出外层循环
            }
        }
    }
    
    3、continue

    ​ continue语句在循环语句总,作用是:终止本次循环,执行下一次循环

    Switch

    当条件判断较多时,可以用switch语句来实现。例子如下:

    int weeek = 5;
    switch (week) {
        case 1: 
            System.out.println("星期一");
            break;
        case 2:
            System.out.println("星期二");
            break;
        default:
            System.out.println("其他工作日和周末");
            break;
    }
    

    在jdk1.7之后,switch语句中的表达式为byte、short、char、int、enum、String类型。

    在switch语句中,如果多个case条件后面的执行语句是一样的,则该执行语句只需写一次即可,例子如下:

    int week = 2;
    switch (week) {
        case1:
        case2:
        case3:
        case4:
        case5:
            Sytem.out.println("今天是工作日");
            break;
        case6:
        case7:
            System.println("今天是休息日");
            break;
    }
    
    JVM内存划分

    JVM对自己的内存划分为5个区域:

    a:寄存器:内存和cpu之间;

    b:本地方法栈:jvm调用了系统中的功能;

    c:方法区和数据共享区:运行时期class文件进入的地方;

    d:方法栈:所有的方法运行的时候进入内存;

    e:堆:存储的是容器和对象;

    数组

    数组变量保存的是数组在内存中的地址;数组初始化3种方式:

    1.动态初始化 int[] arr = new int[3]
    2.静态初始化 int[] arr = new int[]{1, 2, 3}
    3.静态初始化(简便,推荐) int[] arr = {1, 2, 3}

    二维数组

    定义二维数组的三种方式:

    1、int[][] arr = new int[3][4]

    2、int[][] arr = new int[3][] 这种方式和第一种方式类似,只是内层数组的长度不确定。

    3、int[][] arr = {{1,3}, {3,4,5,6}, {7,8.9}}

    方法

    方法的语法格式如下:

    修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2, .....){
            执行语句
            ......
            return 返回值;
    }
    
    方法的重载

    Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。

    例如以下三个方法互为重载关系:

    public static int add(int x, int y){}
    public static int add(int x, int y, int z){}
    public static int add(double x, double y){}
    
    • 重载方法参数必须不同:参数个数不同、参数类型不同、参数顺序不同;(满足其一)

    • 重载只与方法名和参数类型相关,和返回值无关:

      ​ 如 void method(int x)int method(int y) 不是方法重载,不能同时存在

    • 重载与具体变量标识符无关:

      ​ 如 method(int x)method(int y) 不是方法重载,不能同时存在

    参数传递
    • 方法参数是基本类型时,传递的是值;形参的改变,不会影响实际参数的值;

    • 方法参数是引用类型时,传递的是内存地址值;形参的改变会影响实际参数的值

    引用数据类型--类
    • java中的数据类型分为:基本类型和引用类型;
    • 引用类型的分类:
      • Java为我们提供好的类,如Scanner、Random等;
      • 我们自己创建的类,按照类的定义标准,类中包含方法和属性;
    自定义类的内存图
    对象内存图.JPG
    类中的属性,跟随容器进入到内存,属性进入内存,赋予默认值
    两个引用类型变量内存图
    两个引用变量内存图.JPG
    创建引用类型的变量,只要new了,内存中就会开辟一个新的内存空间,内存中将有自己的属性;
    ArrayList创建变量的步骤
    //数据类型<集合存储的数据类型> 变量名 = new 数据类型<集合存储的数据类型>();
    ArrayList<String> array = new ArrayList<String>();
    ArrayList<Integer> array = new ArrayList<Integer>();
    //集合存储的数据类型:要将数据存储到集合的容器中;存储引用类型,不存储基本类型
    //创建集合引用变量的时候,必须要指定好存储的类型是什么
    
    ArrayList的常见方法

    add(param) 向集合中添加元素

    ArrayList<String> array = new ArrayList<String>();
    array.add("abc");
    

    get(int index) 取出集合中的元素

    String a = array.get(0);
    

    size() 返回集合的长度,集合存储元素的个数

    int size = array.size();
    
    ArrayList的补充方法

    add(int index, param) 将元素添加到指定的索引上

    ArrayList<Integer> array = new ArrayList<Integer>();
    array.add(2, 7);
    

    set(int index, param) 对指定索引上的元素进行修改

    array.set(0, 10);
    

    remove(int index) 删除指定索引上的元素

    array.remove(4);
    

    clear() 清空集合中的所有元素

    array.clear();
    
    ASCII编码编码表

    计算机中,所有的数据在存储和运算时都要使用二进制数表示。

    对应ASCII编码十进制:

    0~9:对应48~57;A~Z对应65~90;a~z对应97~122;
    
    char类型的存储
    • short:占两个字节,是有符号数据,取值范围-32768~32767
    • char:占两个字节,是无符号数据,取值范围0~65536
    • int:占4个字节
    1、char转成int类型的时候,类型自动提示,char数据类型,会查询编码表,得到整数;
    2、int转成char类型的时候,强制转换,会查询编码表;
    3、char存储汉字,查询unicode编码表
    4、char可以和int计算,提示为int类型,内存中寸两个字节
    
    数组逆序
    public static void reverse(int[] array) {
        for(int min = 0, max = array.length - 1; min < max; min++, max--) {
            int temp = array[min];
            array[min] = array[max];
            array[max] = temp;
        }
    }
    
    选择排序
    //数组中的每个元素都进行比较
    public static void selectSor(int[] array) {
        //外循环,控制的是一共比较了多少次
        for (int i = 0; i < array.length - 1; i++) {
            //内循环,控制的是每次比较了多少个元素
            for (int j = i; j < array.length - 1; j++) {
                if (array[j + 1] < array[i]) {
                    int temp = array[i];
                    array[i] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }
    
    冒泡排序
    //数组中的相邻元素进行比较
    public static void bubbleSor(int[] array) {
        //数组循环的圈数为数组长度-1
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - 1; j++) {
                if (array[j + 1] < array[j]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }
    
    数组的折半查找(二分查找)
    /**
     * 1.定义三个变量 min mid max
     * 2.循环条件 min <= max
     * 3.goal > arr[mid]  min = mid + 1
     *   goal < arr[mid]  max = mid - 1
     *   goal == arr[mid] find
     * 4.循环结束,无法折半,元素没有找到
     */
    public static int binarySearch(int[] array, int goal) {
        int min = 0;
        int max = array.length - 1;
        int mid = 0;
        while (min <= max) {
            mid = (min + max) / 2;
            if (goal < array[mid]) {
                max = mid + 1;
            } else if (goal > array[mid]) {
                min = mid + 1;
            } else {
                System.out.println("find the goal, the goal index is: " + mid);
                return mid;
            }
        }
        System.out.println("the goal is not in the array");
        return  -1;
    }
    

    相关文章

      网友评论

          本文标题:java基础语法

          本文链接:https://www.haomeiwen.com/subject/rbjbcqtx.html