1.java基础语法总结

1.JDK:java Development Kit,java的开发环境和运行环境,java的开发工具和jre。

2.JRE:Java Runtime Environment,java程序的运行环境,java运行所需的类库+JVM(java虚拟机)

3.环境配置变量:让java jdkin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。

4.环境变量的配置:打开环境变量配置窗口,

注意:如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;

如果指定了classpath,那么会在指定的目录下查找要运行的类文件。

CLASSPATH是什么?它的作用是什么?

它是javac编译器的一个环境变量。它的作用与import、package关键字有关。当写下improt java.util.*时,编译器面对import关键字时,就知道你要引入java.util这个package中的类;但是编译器如何知道你把这个package放在哪里了呢?所以你首先得告诉编译器这个package的所在位置;如何告诉它呢?就是设置CLASSPATH啦 :) 如果java.util这个package在c:/jdk/ 目录下,你得把c:/jdk/这个路径设置到CLASSPATH中去!当编译器面对import java.util.*这个语句时,它先会查找CLASSPATH所指定的目录,并检视子目录java/util是否存在,然后找出名称吻合的已编译文件(.class文件)。如果没有找到就会报错!CLASSPATH有点像c/c++编译器中的INCLUDE路径的设置哦,是不是?当c/c++编译器遇到include 这样的语句,它是如何运作的?哦,其实道理都差不多!搜索INCLUDE路径,检视文件!当你自己开发一个package时,然后想要用这个package中的类;自然,你也得把这个package所在的目录设置到CLASSPATH中去!CLASSPATH的设定,对JAVA的初学者而言是一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。你会发现,在你安装之后,即使完全没有设定CLASSPATH,你仍然能够编译基本的JAVA程序,并且加以执行。

PATH环境变量

PATH环境变量,作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常用到的可执行文件如javac/java/javadoc等待,设置好path变量后,就可以在任何目录下执行javac/java等工具

5.javac和java:javac负责编译,对扩展名为.java文件进行编译,生成了jvm可以识别的字节码文件,也就是.class文件,就是java运行程序

java负责运行部分,会启动jvm,加载运行时所需要的类库,并对class文件进行执行

6.一个文件需要执行,必须有一个执行的起点,起始点为main函数。

7.标识符:字母,数字,下划线,¥组成,数字不能开头,不能使用关键字。

8.变量的作用域:作用域从变量定义的位置开始,到该变量所在的那对大括号结束;

生命周期:从定义的位置开始在内存中。

变量到达它所在的作用域的时候就在内存中消失了。

常量;在程序运行期间,固定不变的量。

9.数据类型:

1)基本数据类型:byte,short,int,long,double,float,char,boolean

byte:-127~128

自动类型转换:小容量向大容量转换进行

强制类型转换:大容量到小容量需要强制类型转换,但可能损失精度

2)运算符:+,-,*,/,  ++。--。%

关系运算符: < > >= <= == 

逻辑运算符:& | ! 

&&(短路与):当表达式第一个结果为false时,发生短路,不执行后一个表达式

  ||(短路或):当表达式第一个结果为true时,发生短路,后面表达式被短路,不在执行

三目运算符:  判断表达式?表达式1:表达式2

如果判断表达式的值为true,则执行表达式1,为false,则执行表达式2

10.分支结构

if(Boolean表达式){}   //如果if后面的表达式为true时,则执行大括号后面的内容

if(){}else{}              

if(){

}else if(){

}else if(){

}else

switch(值(object)){

      case 值1:

        break;

     case 值2:

        break;

     case 值3:

        break;

}

11.循环结构:

while(boolean表达式){

循环体;

}//先判断boolean表达式的值是否为true,如果为true,则执行循环体,执行完成后再判断boolean表达式的值,如果为true继续执行循环体,若为false,则终止循环

do{

循环体;

}while(boolean表达式);//先执行循环体一次,再判断boolean表达式的值是否为true,若为true则继续执行循环体,执行完再判断boolean表达式的值是否为true,若为true则继续执行循环体,为false则终止循环

for(表达式1;循环条件;表达式2){

循环体;

}//给定初始条件为表达式1,判断循环条件是否为true,若为true则执行循环体,执行完后执行表达式2,再判断循环条件是否成立,若成立,继续执行循环体,在执行表达式2,再判断循环条件,若为false则终止循环。

break;可以终止当前循环

12.数组

1),什么是数组?

一组数据的集合(有序集合),它里面可以存储任何类型的数据,每一项之间用“,”隔开

2),怎么创建数组?创建数组的三种方式

int[] arr = new int[5];
int[] arr1 = {1,2,3,4};
int[] arr2 = new int[]{1,2,3,4,5};

3),对于一个给定长度的数组,如何添加元素?

 int[] arr = new int[5];
        arr[0] = 1;
        arr[1] = 2;
        arr[2] = 3;

4),数组的排序

一.冒泡排序:

å¨è¿éæå¥å¾çæè¿°

从数组0位开始,与1位比较大小,如果1位比0位大,则不交换位置,否则交换位置,大的数到1位,小数到0位。以此类推,接着1位和2位比较大小,大的向后移,直至将集合中的元素全部比较结束,将最大的数放到最后一位,循环结束冒泡排序结束。

public class Test2 {
    public static void main(String[] args) {
        int[] arr = {324,32,3,6,4,21,1,9};
        System.out.println("排序前数组"+Arrays.toString(arr));
        for (int i = 1; i < arr.length; i++) {
            for (int k = 0; k < arr.length-i; k++) {
                if (arr[k]>arr[k+1]){
                    int tmp = arr[k];
                    arr[k] = arr[k+1];
                    arr[k+1] = tmp;
                }
            }
        }
        System.out.println("排序后数组:"+Arrays.toString(arr));
    }
}

代码结果: 

排序前数组[324, 32, 3, 6, 4, 21, 1, 9]
排序后数组:[1, 3, 4, 6, 9, 21, 32, 324]

二.选择排序

选择排序原理:遍历集合找到最小(大)的元素的下标,将该元素与第一个元素交换位置,然后在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序。

public class Test4 {
    public static void main(String[] args) {
        int[] arr = {2,4,1,6,43,32,17};
        for (int i = 0; i <arr.length-1 ; i++) {
            int index = i;
            for (int k = i; k < arr.length; k++) {
                if (arr[k] < arr[index]){
                    index = k;
                }
            }
            if (index != i){
                int tmp = arr[i];
                arr[i] = arr[index];
                arr[index] = tmp;
            }

        }
        System.out.println("排序后:"+ Arrays.toString(arr));
    }
}

执行结果:

排序后:[1, 2, 4, 6, 17, 32, 43]

5).数组的遍历

public class Test5 {
    public static void main(String[] args) {
        int[] arr = {2,4,1,6,43,32,17};
        for (int i = 0; i <arr.length ; i++) {
            System.out.println(arr[i]);
        }

    }
}

执行结果:

2
4
1
6
43
32
17

6).数组的复制

import java.util.Arrays;

public class Test5 {
    public static void main(String[] args) {
        int[] arr = {2,4,1,6,43,32,17};

        int b[] = Arrays.copyOf(arr,5);//复制数组的前5位
        System.out.println("copyOf复制方法结果:"+Arrays.toString(b));

        int c[] = Arrays.copyOfRange(arr,1,3);//复制arr数组的下标的1位到3位,包前不包后
        System.out.println("copyOfRange复制方法结果:"+Arrays.toString(c));

        int d[] = new int[7];
        System.arraycopy(arr,3,d,2,2);
        System.out.println("从arr数组的下标为3的位置起,复制到数组d的下标为2的位置,总共复制2个数"+Arrays.toString(d));

    }
}

执行结果:

copyOf复制方法结果:[2, 4, 1, 6, 43]
copyOfRange复制方法结果:[4, 1]
从arr数组的下标为3的位置起,复制到数组d的下标为2的位置,总共复制2个数[0, 0, 6, 43, 0, 0, 0]

13.集合

java集合框架提供了一套性能优良、使用方便的接口和类,他们位于java.util包中

1)List,Set,Map都是接口,前两个继承至Collection接口,Map为独立接口

2)Set下有HashSet,LinkedHashSet,TreeSet

3)List 下有ArrayList,LinkedList,Vector

4)Map下有Hashtable,LinkedHashMap,HashMap,TreeMap

5)Collection接口下还有个Queue接口,有PriorityQueue类

总结:

Connection接口:

-List有序,可重复

-ArrayList

优点:底层数据结构是数组,查询快,增删慢。

缺点:线程不安全,效率高

-Vector

优点:底层数据结构是数组,查询快,增删慢

缺点:线程安全,效率低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值