java基础知识学习

第一章:

1.java跨平台原理

由java虚拟机(jvm)负责java程序在系统中的运行,能独立解析java程序

2.JRE,JDK

jre:包含java虚拟机,java运行环境

jdk:包含jre,java开发环境

3.java环境变量配置

为了在任何地方可以使用java,在环境变量中配置路径。

(1)直接在系统环境变量--CLASSPATH中配置jdk下的bin目录:如D:\jdk1.7\bin

        缺点:jdk所在位置或文件名修改时classpath也要修改,修改CLASSPATH容易出错。

(2)先新建java_home,将路径中会改变的部分提取出,然后在CLASSPATH中配置%Java_Home%\bin;

        优点:当jdk路径变化时,只需修改Java_Home,不需要修改CLASSPATH

第二章:

1.java关键字:

2.进制间转换

十进制->二进制:对n除2取余,由下到上。

二进制->十进制:每一位乘以2的(n-1)次方相加

110 -->: 0*2^(0)+1*2^(1)+1*2^(2)=0+2+4=6;

3.java基本数据类型(8种)

byte,short,int ,long,double,float,boolean,char

4.转义字符

\n:换行;\b:退格,相当于backspace

\r:按下回车键;\t:制表符,相当于tab键

5.循环中for和while

for和while可以互换,使用for循环定义的增量在语句结束时被释放。

while定义的变量执行完成依旧存在内存中。

/**
 * 九九乘法表*/
public static void main(String[] args) {
    for (int x = 1; x <=9; x++) {
        for (int y = 1; y <=x; y++) {
            System.out.print(y+"*"+x+"="+y*x+"  ");
        }
        System.out.println();
    }

6.break和continue语句

(1)beak:
public static void main(String[] args) {
  w: for (int i = 0; i < 3; i++) {

     q: for (int j = 0; j < 4; j++) {
            System.out.println("i="+i);
            break w;
        }
    }
}

w和q是给循环起的别名,break默认结束的是所在的循环体。

break w 指定结束外层循环。

输出:i=0

(2)continue:只能作用于循环结构,特点:结束本次循环开始下一次循环

for (int x = 1; x <=10; x++) {
   if(x%2 ==1){
       continue;
   }
    System.out.println("x="+x);
}

输出:打印出偶数

x=2
x=4
x=6
x=8
x=10

7.数组

(1)选择排序,前一位和后面所有位 依次比较,符合条件则换位

//选择排序
int [] arr = {1,9,4,8,5,9,3};
for (int x = 0; x < arr.length-1; x++) {
    for(int y=x+1;y<arr.length;y++){
        if(arr[x]>arr[y]){
            int z=arr[x];
            arr[x]=arr[y];
            arr[y]=z;
        }
    }
}
for(int i=0;i<arr.length;i++){
    System.out.print(arr[i]+",");
}

输出:1,3,4,5,8,9,9

(2)冒泡排序:相邻位互相比较,符合条件则换位

//冒泡排序
 int [] arr = {1,9,4,8,5,9,3};
 for (int i = 0; i < arr.length-1; i++) {
     //-i:让每次比较的元素减少;-1:避免角标越界
     for (int j = 0; j < arr.length-i-1; j++) {
         if(arr[j]>arr[j+1]){
             int temp=arr[j];
             arr[j]=arr[j+1];
             arr[j+1]=temp;
         }
     }
 }

(3)

Arrays.sort(arr);//import java.util.Arrays;java提供的数据排序方法

8.面向对象

(1)封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式。

封装原则:将不需要对外提供的内容隐藏以来;

                  把属性都隐藏,提供公共方法访问。

(2)构造函数

对象一建立就会调用与之对应的构造函数。

作用:用于给对象进行初始化;

(2)构造代码块

{

   构造代码块执行语句.

}

作用:用于给对象进行初始化;定义的是不同对象共性的初始化内容。

对象一建立就运行,优先于构造函数执行。

和构造函数区别:

构造代码块给所有对象进行统一初始化;

构造函数给对应的对象初始化(如有参和无参初始化不同的对象)

9.java关键字

 (1)static(静态)关键字:

static String country="CN";

特点:1.随着类加载而加载;2.优先于对象的存在(静态先存在,对象后存在);

        3.被所有对象所共享(当对象中出现共享数据使用静态修饰); 4.可以直接被类名所调用.

实例变量和类变量的区别:

类变量(静态变量))随着类的加载而存在于方法区中;

实例变量随着对象的建立存在于堆内存中;

静态使用注意事项:

1.静态方法只能访问静态成员;

2.静态方法中不可以定义this,super关键字.因为静态优先于对象存在.

3.主函数是静态的

静态代码块:

static{

    静态代码块中的执行语句.

}

特点:随着类的加载而执行,只执行一次(优先于主函数执行),用于给类进行初始化的

(2)final关键字

可以修饰类、函数、变量,被final修饰的类不可以被继承;

被final修饰的方法不可以被复写;

被final修饰的变量是个常量只可以赋值一次,可以修饰成员变量,也可以修改局部变量(作为常量,所有字母大写,多个单词由_连接  final double PI=3.14;)

10.对象的初始化过程

Person p = new Person("hello",20);

初始化都做了哪些事情:

1.因为new用到了Person.class,先找到Person.class文件并加载到内存中;

2.执行该类中静态代码块

3.在堆内存中开辟空间,分配内存地址

4.在堆内存中建立对象的特有属性,进行默认初始化

5.对属性进行显示初始化

6.对对象进行构造代码块初始化

7.对对象进行对应的构造函数初始化

8.将内存地址赋给栈内存中的p变量

11.单例设计模式

单例设计模式:解决一个类在内存中只存在一个对象.

如何保证对象唯一:

1.为了避免其他程序过多建立该类对象,先禁止其他程序建立.(将构造函数私有化);

private Student() {}

2.为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象(在类中创建一个本类对象);

private static Student s = new Student(); 

3.为了方便其他程序对自定义对象的访问,对外提供访问方法.(提供方法可以获取到该对象)

public Static Student returnStudent(){

 returen s;

)

饿汉式:先初始化对象,类一进内存就已经创建好了对象.

private static Person p = new Person();

public Static Person returnPerson (){

   returen p;

)

懒汉式:对象在方法调用时才初始化,也称对象的延时加载..类进入内存对象还没有存在,只有调用方式才建立对象.

懒汉式可能存在new多个对象的情况,一般加锁(synchronized)来处理.

加锁情况处理:

private static Prerson p = null;

public static Person getInstance(){

  if(p==null){

       synchronized(Person.class){

            if(p==null)

                 p=new Person();

        }

   }

return p;

}

12.模板方式设计模式

模板方法:在定义功能时,功能的一部分是确定的,有一部分不确定,而确定的部分在使用不确定的部分。此时可以将不确定的部分暴露出去,由该类的子类去完成。

abstract class getTime(){
    public final void getTime(){
        long start= System.currentTimeMillis();
        runcode();
        long end=System.currentTimeMillis();
        System.out.println(end-start);
     }
     
     public abstract void runcode();
}

13.接口

interface用于定义接口;接口中的成员都是public的

接口中的成员都有固定修饰符:

常量:(public static final) int NUM=3;

方法:(public abstract)  void show();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值