Java学习,有其他语言基础(一)
1. java运行机制
1.1 JVM、JRE、JDK
- JVM Java Virtual Machine,Java虚拟机,JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。对于不同的平台,有不同的虚拟机。Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。
- JRE Java Runtime Environment,Java运行时环境,包含JVM,可以运行Java的环境
- JDK Java Development Kit,Java开发工具包,包含JRE,还有一些工具如java、javac、jar等等
在java中,我们写出来的代码都是源代码(.java),源代码是不能执行的,必须编译成字节码文件(.class)

2.简单例子
使用的工具是IDEA
输出一个hello,world
public class Hello {
public static void main(String[] args) {
System.out.println("hello,world");
}
}
class就是一个类,类名首字母注意大写,且与文件名一致。
3. 基础语法
3.1 标识符、注释、关键字
3.1.1 标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($$)、或者下划线(__)开始
- 首字符之后可以是字母(A-Z 或者a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
3.1.2 关键字
| 类别 | 关键字 | 说明 |
|---|---|---|
| 访问控制 | private | 私有的 |
| protected | 受保护的 | |
| public | 公共的 | |
| default | 默认 | |
| 类、方法和变量修饰符 | abstract | 声明抽象 |
| class | 类 | |
| extends | 扩充,继承 | |
| final | 最终值,不可改变的 | |
| implements | 实现(接口) | |
| interface | 接口 | |
| native | 本地,原生方法(非 Java 实现) | |
| new | 新,创建 | |
| static | 静态 | |
| strictfp | 严格,精准 | |
| synchronized | 线程,同步 | |
| transient | 短暂 | |
| volatile | 易失 | |
| 程序控制语句 | break | 跳出循环 |
| case | 定义一个值以供 switch 选择 | |
| continue | 继续 | |
| default | 默认 | |
| do | 运行 | |
| else | 否则 | |
| for | 循环 | |
| if | 如果 | |
| instanceof | 实例 | |
| return | 返回 | |
| switch | 根据值选择执行 | |
| while | 循环 | |
| 错误处理 | assert | 断言表达式是否为真 |
| catch | 捕捉异常 | |
| finally | 有没有异常都执行 | |
| throw | 抛出一个异常对象 | |
| throws | 声明一个异常可能被抛出 | |
| try | 捕获异常 | |
| 包相关 | import | 引入 |
| package | 包 | |
| 基本类型 | boolean | 布尔型 |
| byte | 字节型 | |
| char | 字符型 | |
| double | 双精度浮点 | |
| float | 单精度浮点 | |
| int | 整型 | |
| long | 长整型 | |
| short | 短整型 | |
| 变量引用 | super | 父类,超类 |
| this | 本类 | |
| void | 无返回值 | |
| 保留关键字 | goto | 是关键字,但不能使用 |
| const | 是关键字,但不能使用 | |
| null | 空 |
4.1 整数类型:
- byte
占1字节,范围-128~127 - short
占2字节,范围-32768~32767 - int
占4字节,范围-2,147,483,648~2,147,483,647 - long
占8字节,范围-9,223,372,036,854,775,808~9,223,372,036,854,775,807
4.2 浮点类型
- float,占4字节
- double,占8字节
4.3 字符类型
char,占2字节
String是一个类
4.4 boolean类型
boolean,占1位,值只有true和false
位(bite)是计算机内部数据,储存的最小单位
字节(byte)是计算机中数据处理的基本单位,1字节=8位
int num1=10;
byte num2=20;
short num3=30;
long num4=40L; //long类型要在数字后面加L
float num5=50.1F; //float类型在数字后加F
double num6=60.0000001;
char c='a';
boolean b=false;
4.5类型转换
运算中,不同类型的数据先转换为同一类型,然后进行运算。
4.5.1 自动转换
由低到高
byte,short,char->int->long->float->double
char c='a';
int n=c+1;
System.out.println(n);
计算n时自动将char类型转换为int类型
4.5.2 强制转换
由高到低
(类型)变量名
char c='a';
int n=c+1;
System.out.println((char)n);
输出:b
转换的时候可能出现内存溢出
int num1=188;
byte b=(byte)num1;
System.out.println(b);
输出:-68,因为超出byte范围
或精度损失
float f1=53.2f;
double d1=58.321;
System.out.println((int)f1);
System.out.println((int)d1);
输出:53 58
5. 运算符
- 算术运算符:+,-,*,/,%,++,--
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符: ?:
- 赋值运算符:+=,-=,*=,/=
比较基础,不多赘述
6. 条件语句
6.1 if
if……else
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}else{
//如果布尔表达式的值为false
}
if...else if...else
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
嵌套的 if…else
if(布尔表达式 1){
////如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
////如果布尔表达式 2的值为true执行代码
}
}
6.2 switch
基本结构
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
7 循环
7.1 while
基本结构
while( 布尔表达式 ) {
//循环内容
}
例
public class Test {
public static void main(String args[]) {
int x = 10;
while( x < 20 ) {
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}
}
}
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
7.2 do……while
基本结构
do {
//代码语句
}while(布尔表达式);
例
public class Test {
public static void main(String args[]){
int x = 10;
do{
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}while( x < 20 );
}
}
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
7.3 for
基本结构
for(初始化; 布尔表达式; 更新) {
//代码语句
}
例
public class Test {
public static void main(String args[]) {
for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x );
System.out.print("\n");
}
}
}
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
可用于数组的for循环
for(声明语句 : 表达式)
{
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
例
public class Test {
public static void main(String args[]){
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}
}
10,20,30,40,50,
James,Larry,Tom,Lacy,
8.方法
方法是语句的集合,他们在一起执行一个功能
8.1 方法定义
基本语法
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
- 修饰符:是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
- 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
- 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
- 方法体:方法体包含具体的语句,定义该方法的功能。
例
public class demo {
public static void main(String[] args) {
int a=max(1,2);
System.out.println(a);
}
public static int max(int num1, int num2) {
int result;
if (num1 > num2){
result = num1;
}else{
result = num2;
}
return result;
}
}
2

8.2 方法调用
Java都是值传递,没有引用传递。
调用一个方法时候需要提供参数,你必须按照参数列表指定的顺序提供。
int a=max(1,2);
8.3 方法重载
重载就是在一个类中,有相同的函数名称,但形参类型不同的函数。
重载的方法必须拥有不同的参数列表,不能仅仅依据修饰符或者返回类型的不同来重载方法。
public static int max(int num1, int num2) {
int result;
if (num1 > num2){
result = num1;
}else{
result = num2;
}
return result;
}
public static double max(double num1, double num2) {
double result;
if (num1 > num2){
result = num1;
}else{
result = num2;
}
return result;
}
调用的时候可以用
int sum1=max(1,2);
double sum2=max(1.0,2.0);
8.4 可变参数
JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。
在方法声明中,在指定参数类型后加一个省略号。
typeName... parameterName
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public class demo {
public static void main(String[] args) {
printMax(34, 3, 3, 2, 56.5);
printMax(1,2,3);
}
public static void printMax( double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for (int i = 1; i < numbers.length; i++){
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
}
The max value is 56.5
The max value is 3.0
8.5 递归
方法自己调用自己叫递归。
递归结构包含两个部分:
- 递归头:什么时候不调用自己。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
例
public class demo {
public static void main(String[] args) {
int v=f(5);
System.out.println("5的阶乘是:"+v);
}
public static int f( int n) {
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
5的阶乘是:120
9.数组
持续更新

浙公网安备 33010602011771号