Java 基础

一.基本开发步骤

  1. 编写代码,形成 文件名.java 源代码文件
  • 文件名称继续为java为结尾
  • 文件名称必须与类名称一致
  1. 使用 javac 编译,形成 filename.class 字节码文件
  • cmd:javac filename.java
  1. 使用 java 运行
  • cmd:java filename (绝对绝对不要写 .class !!!)
  • JDK11 以上才能直接运行 java 文件

二、JDK的组成

JDK ( Java Development Kit ): Java 开发工具包

  • 开发工具: Java、Javac ……

  • JRE ( Java Runtime Environment ): Java 的运行环境

    • JVM ( Java Virtual Machine ): Java 虚拟机
    • 核心类库: Java 自己写好的程序,给予调用

三、字面量

  1. 整数

  2. 小数

  3. 字符:使用单引号,单引号内必须只有一个字符(可为空字符)

  • 特殊字符:
    • /n :换行
    • /t :缩进
  1. 字符串:使用双引号,可无内容

  2. 布尔值:true 或 false ,无数值含义

  3. 空值:null

四、变量

1. 格式:数据类型 变量名称 = 值

2. 一些常用的变量:

  • int 整数
  • double 小数
  • char 字符

3. 注意事项

  • 先声明后使用,声明后可以没有值,但使用时必须有值

  • 同一域内不能定义名称一样的变量

五、标识符

  1. 由数字、字母、“_”、汉字和 “$” 组成,但开头不能是数字,取名要见名知意。

  2. 变量名称首字母小写,后继单词首字母大写。

  3. 类名称首字母大写,其余与变量名称规则相同。

六、数据类型

  1. 整形
byte short int long
1字节 2字节 4字节 8字节
  1. 浮点型
float double
4字节 8字节
  1. 字符型
char
2字节
  1. 布尔型
boolean
1字节
  1. 自动类型转换:

byte -> short -> (char ->) int -> long -> float -> double

  1. 随机
  • Random

七、基本算术运算符

+ - * / % ++
除余 自增
-- += -= *= /= %=
自减 先加后赋值 先减后赋值 先乘后赋值 先除后赋值 先除余后赋值
> < >= <= == !=
判断是否大于 判断是否小于 判断是否大于等于 判断是否小于等于 判断是否相等 判断是否不等
& | ! ^ 条件表达式 ? 值1 : 值2
逻辑与 逻辑或 逻辑非 逻辑异或 判断条件表达式,是为值1,否为值2

八、流程控制结构

1. 分支结构

  • if 语句
if ( 条件 ) { 
    语句; 
} else if ( 条件 ) {       //必要时可省略
    语句; 
} else {                  //必要时可省略
    语句; 
}
  • switch 语句
switch (变量) { 
    case "xxx":     //可以一次只放一个
        语句; 
        break; 
    case "xxx": case "xxx": case "xxx": ……     //多个时可并排放
        语句; 
        break; 
    default: 
        语句; 
}

2. 循环结构

  • for 循环
for( 初始化语句 ; 循环条件 ; 迭代语句 ) {   //条件下循环
    语句; 
}
for( 元素类型 循环变量名:数组名 ) {   //整个数组遍历一次
    语句; 
}
  • while 循环:先 while 后 do
初始化语句;
while ( 循环条件 ) { 
    循环体语句; 
    迭代语句; 
}
  • do-while 循环:先 do 后 while
初始化语句;
do { 
    循环体语句; 
    迭代语句 
} while ( 循环条件 );

3. 跳转关键字

  • break :跳出并结束当前所在循环的执行
  • continue :跳出当前循环的当次执行

九、数组

所谓的数组其实是存在一连串连续空间的数据,数组名指向该一连串空间的首空间的地址。

  1. 创建数组
  • 数据类型[] 数组名 = new 数据类型[] {元素1,元素2,…… };
  • 数据类型 数组名[] = {元素1,元素2,…… };
  1. 数组的长度
  • 数组名.length

3.动态初始化数组

  • 数据类型[] 数组名 = new 数据类型[长度];

十、方法

方法是一种语法结构,可以把一段代码封装成一个功能,以便调用。

1.格式

修饰符 返回值类型 方法名 { 形参列表 } { 
    方法体代码; 
    return 返回值; 
}
  1. 调用
  • 方法名称( 实参列表 );
  • 变量 = 方法名称( 实参列表 );
  1. 参数的传递
  • 基本数据类型:传递实参,但不会改变调用前所在函数的数据。
  • 引用类型:使用地址传参,会改变地址所在的数据。
  1. 方法重载
    一个类中,出现多个方法名称相同但形参列表不同。

十一、对象

通俗的讲,对象是一个放了数据和操作方法的容器。

首先,需要设计对象,如:

public class Student {
  //对象的属性,一般来说有默认值(null或0)
  String name;
  int age;
  ...
 
  //对象的方法,处理所需要的信息并返回
  public void putImformation() {
    ...
  }

  //可以同时有多个方法
  public void getScore() {
    ...
  }
}

然后,在需要调用时,可像这样操作:

//创建对象实例,并输入实例信息
Student st1 = new Student();
st1.name = "...";
st1.age = ...;
...
//调用对象里存在的方法
st1.putImformation();
...

同时,也可以通过直接赋值,从而引用对象实例,并可从中作出修改(即将对象的地址直接传给了另一个实例)

//创建实例1
Student st1 = new Student();
st1.name = "...";
st1.age = ...;
...

//创建实例2,直接赋值
Student st2 = st1;

//从中可做出修改,此时会影响 st1
st2.name = "...";
...

注意事项:

  • 当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”,Java 虚拟机的垃圾回收机制会自动清除掉垃圾对象

十二、this 关键字

如单词所表达,this 关键字用来指当前的对象。

什么是 this 关键字?

  • this 就是一个变量,可以用在方法中,来拿到当前对象。
  • 哪个对象调用方法,this 就指向哪个对象。

this 关键字有什么用?

  • 用来解决变量名称冲突问题,例如:
public class Stduent {
  double score;  //这是对象里的变量
  
  public void compare(double score) {  //这是对象里的方法所接收数据用的变量名
    
    //错误使用示例
    if(score > score) {语句;}  //此时两个score都指的是最近的变量名。即方法所使用的变量名

    //正确使用示例
    if(this.score > score) {语句;}  //此时前者访问对象里的变量名,后者访问方法所使用的变量名
  }
}

十三、构造器与封装

什么?原来对象里可以放多个和对象重名的方法以加强兼容性?

什么是构造器?

  • 与类名相同的方法,例如:
public class Student {
  
  //构造器
  public Student() {
    ...
  }
}

特点是什么?

  • 不能写返回值。
  • 与类名同名。
  • 打开对象时,会调用构造器,例如:
//对象
public class Student {

  public Student() {
    System.out.println("无参数构造器被执行了。");
    }

  public Student(int N) {
    System.out.println("有参数构造器被执行了,参数为" + N);
    }
    
  public Student(String name, int N) {
    System.out.println("多参数构造器被执行了。");
    this.name = name;
    this.age = N;
  }
}
//调用对象的程序
public class Test {
    
  public static void main(String[] args) {
        
    //调用无参数构造器
    Student st1 = new Student();
    
    //调用有参数对象构造器
    Student st2 = new Student(10);
    }

    //调用多参数对象构造器
    Student st3 = new Student("李华", 10);
    System.out.println(st3.name + st3.age);
        
}

则输出结果为:

注意事项:

  • 如果不写构造器,Java会为类自动生成一个无参构造器。
  • 若已定义有参数构造器,则Java不自动生成无参构造器,此时应自己手写一个无参数构造器。

什么是封装?

  • 将要处理的数据及方法设计到一个对象中。

封装的特点

  • 合理隐藏,合理暴露:根据实际需要,将变量或方法利用 public 或 private 来对外公开或隐藏,防止外部程序过度访问对象内容。

十四、实体类

很特殊,特殊到外部只能看到接口,不能看到内部

什么是实体类?

  • 是一种特殊形式的类,仅用于保存数据。
  • 必须要有一个公共的无参构造器。
  • 成员变量都要 private ,并且要对外提供相应的getXxx,setXxx方法。(一般没有其它方法)

附录一:部分常用ASCII码

字符 字符编号
0-9 48-57
A-Z 65-90
a-z 97-122
posted @ 2024-03-27 23:03  SmallGoldMedal  阅读(28)  评论(0)    收藏  举报