Java入门基础概念

1 jdk、jre、jvm区别

  • jdk: Java Development Kit
  • jre: Java Runtime Environment
  • jvm: Java Virtual Machine

2 环境配置

添加以下环境变量内容:

  • JAVA_HOME:D:\jvm\jdk
  • Path: %JAVA_HOME%\bin
  • ClassPath: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
    Path变量:提供命令路径。
    ClassPath变量:提供libjar等路径,供Java程序寻找类
    最前面的.;表示先查找当前目录下的class

3 JVM内存划分

JVM对自己的内存进行了划分,分为5个区域:

  • 寄存器:内存与CPU之间
  • 本地方法栈:JVM调用系统中的功能
  • 方法和数据共享:运行时期class文件进入的地方
  • 方法栈:所有方法运行时候进入的内存
  • :存储容器和对象
    注意:代码块结束时,JVM会自动清除空间,不用像C++中使用delete手动释放空间。

4 Java垃圾回收

  • 传统的C/C++编程需要程序员回收已经分配的内存,Java程序的内存分配与回收都由JRE在后台自动进行。
  • JRE会负责回收那些不再使用的内存,该机制为垃圾回收(GC)。
  • 回收对象之前,系统会调用它的finalize()方法,此时对象还处于可恢复状态,在finalize()方法中重新让一个变量引用该对象,该对象会再次变为可达状态,否则该对象进入不可达状态。
  • 为更快回收不再需要的内存,建议:
    1. 将不再使用对象的引用变量设置为null.
    2. 调用Runtime.getRuntime.gc()System.gc()等方法来建议系统进行垃圾回收。
      public class GcTest{
         public static void main(String[] args){
             for(int i=0;i<4;i++){
                 new GcTest();  //创建匿名对象
                 //主动建议系统回收垃圾
                 System.gc();
             }
         }
         public void finalize(){
             System.out.println("系统正在清理GcTest对象的资源……");
         }
      }
      

5 Java程序命令行启动

Java程序的执行过程:

java源程序 *.java
编译器
.class文件
JVM运行
  • javac.exe: 编译器
  • java.exe: 解释器

编译命令:

javac -cp [classpath1:classpath2...] -d /target/path Source.java

打包jar命令:

jar -cf test.jar /directory

执行命令

java -cp [classpath1:classpath2...] mainClass

-cp具体的使用方式:

6 Java源文件结构

  • HelloWorld.java源文件:
public class HelloWorld{	//类名必须和.java源文件名一致
	public static void main(String[] args){		//main函数是java程序执行的起点
		System.out.println("Hello World!!!");
	}
}

7 标识符

  • 标识符
    程序中自己定义的内容,如类名方法名变量名等。
  • 命名规则:硬性要求
    • 标识符可以包含英文字母26个(包含大小写)0-9数字$(美元符号)_(下划线)
    • 标识符不能以数字开头。
    • 标识符不能是关键字。
  • 命名规范:软性要求
    • 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)HelloWorld
    • 变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)helloWorld
    • 方法名规范:同变量名。(小驼峰式)
    • Package名规范:全部小写。

8 Java数据类型

数据类型
基本数据类型
引用数据类型
数值类型
字符类型char
布尔类型bool
数组
类class
接口interface
整型byte short int long
浮点型float double

注意:实际上,引用类型变量就是一个指针,只是Java中不再使用指针这个说法。

9 简单输入输出

  • 输出
    System.out.println(输出内容);
  • 输入import java.util.Scanner;
    Scanner sc = new Scanner(System.in);
    int i = sc.nextInt();
    
  • 随机数import java.util.Random;
    Random ran = new Random();
    int i = ran.nextInt(10);
    

10 数组

  • 定义数组
    dataType[] arrayName = new dataType[arraySize]
  • 数组大小
    arrayName.length
  • 数组使用示范
    代码如下:
public class ArrayDemo{
	public static void main(String[] args){
		int[] arr1 = new int[3];		//动态初始化,动态指定数组长度
		int[] arr2 = new int[]{1,2,4};	//静态初始化1
		int[] arr3 = {1,2};				//静态初始化2
		System.out.println(arr1);	//输出数组地址
		System.out.println(arr2[1]);	//输出2
		System.out.println(arr3.length);	//输出2
	} 
}

程序运行中内存分配:

  • foreach循环
    简单的循环遍历数组和集合的方式。
for(type variableName : array | collection){
    // variableName 自动迭代访问每个元素...
}
public class ForeachTest {
	public static void main(String[] args) {
		int[] a = new int[] { 1, 2, 3, 4, 5 };
		for (int i : a) {
			System.out.println(i);
		}
	}
}

11 方法

  • 方法的定义
    修饰符 返回值类型 方法名(参数列表);
    如:
    public static void main(String[] args){
    	...
    }
    
  • 参数传递
    • 值传递
      	public static void change(int a, int b){
      		a=a+b;
      		b=b+a;
      	}
      
    • 引用传递(地址传递)
      public static void change(int [] a, int index){
      	a[index]=100;
      }
      
  • 方法重载(overload)
    • 方法名相同
    • 参数列表不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值