java语言学习笔记

java语言基础知识

一般常识

java运行在JVM(java虚拟机)上,以此达到跨平台。JDK是java程序开发工具,而jre是java运行的环境。总的说JDK>JRE>JVM。java主要分为java SE(开发和部署桌面、服务端等的应用程序,是EE的基础)、javaEE(服务端)、javaME(移动微端)三个体系。java是纯粹面向对象的语言,相对于C++抛弃了指针和多继承,增加了内存管理。

编译相关

javac即把.java源文件编译为.class二进制规范文件,在通过java命令在JVM解释执行。

java学习必知

对象具有属性和行为,具有变化的状态,是某个类别的实例,具有唯一性。

java语言程序结构

hello world!

1
2
3
4
5
6
7
8
/*第一个java程序*/
public class HelloJava {
// 这里是程序入口,public class指出其是个公共类,即如头文件一般可被其他类使用
public static void main(String[] args) {
// 输出字符串,static指出其为静态方法,void即无返回值,main是所以程序的入口,即c中的主函数。
System.out.println("你好 Java");
}
}

数据类型

基本数据类型

  • 整型 int
  • 字符串 String
  • 字符型 char
  • 布尔型 boolean
  • 实型(单精、双精) float/double

构造数据类型

  • 枚举类型
  • 数组类型 // int[] score;int score[10]; 先申明,再赋值
  • 结构体类型
  • 共用体类型

变量

全局变量无static修饰,通过 对象名.变量名 访问,只要对象被引用,变量就存在;静态变量用static修饰,通过 类名.变量名或对象名.变量名 访问,生命周期取决于类的周期;局部变量仅在定义的方法中有效。

1
2
3
4
5
6
7
8
9
10
11
12
public class DataClass {
String name; // 成员变量、实例变量
static final String website = "C语言中文网"; // 成员变量、静态变量(类变量)
}
public class Test {
public static void main(String[] args) {
DataClass dc = new DataClass(); // 创建类的对象
System.out.println(dc.name); // 对象名.变量名调用实例变量(全局变量)
System.out.println(dc.website); // 对象名.变量名调用静态变量(类变量)
System.out.println(DataClass.website);
}
}

数据类型转换

自动类型转化

自动向高级数据类型转换。整型→实型

强制类型装换

(数据类型) (表达式)

(int)(x/2+y)

String转换为int

Integer.parseInt(str)

类似c语言调用外部头文件中的函数。

integer是一个类,int基本数据类型的封装类。

运算

常见表达式

java运算 说明
++a 先自加,再取值
a– 取值后自减
b=-a 取反,如12变-12
a+=5 a = a+5,即先加再赋值

位运算

运算符 说明 详细
& 按位与 9&5在内存中解为二进制,仅1与1为1
| 按位或 如上,有1则1
^ 按位异或 如上。不同为1,相同为0
~ 取反 取反
<< 左移 二进制左移,丢高位,低位补0
>> 右移 丢地位,高位按高位内容补

程序结构

判断体

if判断结构

1
2
3
4
5
6
7
8
9
10
if(表达式1) {
语句块1;
} else if(表达式2) {
语句块2;
...
} else if(表达式n) {
语句块n;
} else {
语句块n+1;
}

switch语句(与c存在细微差别)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
System.out.println("请输入座位号码:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
switch (num) {
case 8:
System.out.println("恭喜你,获得了三等奖!");
break;
case 88:
System.out.println("恭喜你,获得了二等奖!");
break;
case 888:
System.out.println("恭喜你,获得了一等奖!");
break;
default:
System.out.println("谢谢参与!");
break;
}
}

循环体

for循环

1
2
3
for(执行1;判断1;每次循环句){
执行代码块;
}

java特色for-each遍历数组

1
2
3
4
5
6

int[] numbers = { 43, 32, 53, 54, 75, 7, 10 }; // 声明并初始化int数组
System.out.println("----for each----");
for (int item : numbers) { // for-each语句 。for(类型 变量名:集合)
System.out.println("Count is:" + item);
}

while循环

1
2
3
while(为“真”即循环){
执行代码块;
}

do-while循环

1
2
3
do{
执行代码块;
}while(表达式); //至少执行一次。

break和continue循环中断

break跳出当前一层循环;
continue结束本次循环开始下次。

各种类(一些默认包含的头文件)

Java为每种基本数据类型分别设计了对应的类,称之为包装类(Wrapper Classes)。基本数据类型转换为包装类的过程称为装箱,包装类变为基本数据类型的过程称为拆箱,即一个将同类型变量包装为一个类用于调用。 Java 所有的类都是Object类的子类,即java所有类默认包含Object这个头文件内容,即所有java类可调用object类的方法。

类的定义详细

1
2
3
4
5
6
7
8
9
public class Person {
public String name; // 姓名,初始化null
private int age; // 年龄,初始化为0
final int sex = 0; //修饰默认,即无法更改。若未赋值,则需要编写修改其值的方法。
public void tell() {
// 定义说话的方法
System.out.println(name+"今年"+age+"岁!");
}
}

类的封装

即把对象的细节隐藏,仅把通用的东西按规定的方式对外(只能通过设置的方法进行访问),如一台计算机内部复杂的内容,最后被封装为对外的几个接口。

类的继承

1
2
3
4
5
6
7
8
9
10
11
12
public class Student extends People {  //student类继承people的属性和方法
private String stuNo; // 学号
private String department; // 所学专业
public Student(String name, int age, String sex, String sn, String stuno, String department) {
super(name, age, sex, sn); // super是用于调用父类中的构造方法
this.stuNo = stuno;
this.department = department;
}
public String toString() {
return "姓名:" + name + "\n年龄:" + age + "\n性别:" + sex + "\n身份证号:" + sn + "\n学号:" + stuNo + "\n所学专业:" + department;
}
}

经典java语言程序

java坦克大战(来自网络)

-------------本文结束感谢您的阅读-------------