1.什么是java
Java可以理解为编程语言或者开发工具。
2.java的目的
- java 最终的目的是用于编写直接在机器上运行的程序。
3.java的运行原理
Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。
4.对于面向对象编程和面向过程编程的初步认识
面向过程编程:通过一个函数去完成一件事情,而且这件事情完成之后,不会留下任何的遗产。或者理解为:一次性。
面向对象编程:在完成一件事情时,会将事情中的实体对象抽象出来,形成「类」的概念,事情的完成是通过类的对象之间发生关系去实现的。
类是一群对象的特征母版,对象是类的实现。
特征(类)包含的内容有:基本属性(属性)、行为(方法)
、、、类:类是一个模板,它描述一类对象的行为和状态
、、、对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。
一个类可以拥有多个方法
数据类型
Java 是一种强数据类型的语言,就是指在变量进行定义的时候,就指定了变量的数据类型是什么。
内存:运行中的程序都会占用内存空间,因为程序在运行过程中,需要开辟包括方法栈区、变量…,广泛的理解,在程序运行结束后内存空间会被释放,但是定义的变量、方法等,都是有「生命周期」的,一旦变量销毁了,内存也是会释放的。
在 Java 中,有垃圾自动回收机制 GC ,对于释放的或者无效的变量会自动回收,不像 C 、C++ 要手动的去释放。
基本的数据类型
- 数值型
<1>整数型:byte(-128-127)、short(15次方)、int(31次方)、long(63次方)
<2>浮点型:float(38次方)、double(308次方)
<3>在实际开发中,我们一般使用 int、double - 字符型
char:用单引号表示,Java 中使用16位的 Unicode 字符集作为编码方式,
表示方式
直接通过单个字符表示:‘a’、‘9’ 等;
通过转义字符表示:’\t’、’\n’、’\r’、’’’;
直接使用 unicode 表示:’\uxxxx’。 - 字符串类型
String str - 布尔型
boolean:表示逻辑中的真和假,值只有 true / false。
关于数据之间的转化
在基本数据中,是可以进行类型之间的强制转化的,但是要注意,如果从低精度的转化为高精度时不会有问题,但是从高精度转化为低精度时,可能出现精度缺失。
java里面的转义符
表达 | 效果 |
---|---|
\n | 换行 |
\r | 回车 |
\f | 换页符 |
\b | 退格 |
\0 | 空格 |
\s | 字符串 |
\t | 制表符 |
\” | 双引号 |
\’ | 单引号 |
变量
在 JS 中,通过 var i = 10; i = “abc”; 使用变量,因为没有在声明变量的时候给于数据类型的强制定义,可以给变量赋予任意类型的值。我们把 JavaScript 称为弱类型编程语言。
Java 在声明编程时候,必须准确定义变量的数据类型。
变量声明的语法:数据类型 变量名;
例如:int a;
变量赋值的语法:变量名 = 值;
例如:a = 10;
两者可以写在一起:数据类型 变量名 = 值;
例如:int a = 10;
直接量
直接量是指在程序中直接通过源代码的方式指定的值,有时也成为字面量。
在编译的时候,JVM 就定义到常量池中。
比如 int a = 5; 这里的 5 就是一个直接量。
在 Java 中可以定义的直接量包含:基本数据类型、字符串类型、null。
注:String 类是一个不可改变类,意思就是在String 对象被创建出来后就不能被改变了。当程序第一次使用某个字符串直接量时,Java 会使用常量池来缓存该字符串直接量。如果后面程序用到了这个字符串直接量,Java 会直接引用常量池字符串。在常量池中不会存在两个一样的字符串字面量值。
运算符
算术运算符
+ - * / % ++ –
+ 运算符除了进行数学运算的加法之外,还可以做字符串的拼接。
++ 自增
– 自减
实例:
int m = 10;
System.out.println(m++); // 10
System.out.println(m); // 11
System.out.println(++m); // 12
System.out.println(-m); // -12
赋值运算符
= += -= = *= %=
实例
m += 1; // m = m + 1
System.out.println(m); // 13
m -= 1; // m = m - 1
System.out.println(m); // 12
比较运算符
用于判断两个变量或者常量的大小,返回结果为 true/false。
>< <= >= == !=
左右两边的操作数只能是数值
逻辑运算符
运算符两边必须是 boolean 类型的变量、常量、表达式
与 && 或者 || 非 !
与:只要有一个假就是假
或者:只要有一个真就是真
三目运算符
expression ? if-true-statement : if-false-statement
实例:
int age = 16;
String ageStr = age > 18 ? “成年” : “未成年”;
System.out.println(ageStr); // 未成年
循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码。
被重复执行的代码叫做循环体。
循环语句可能包含的部分有:
初始化语句(init_statement):一条或多条语句,这些语句用于完成一些初始化的工作。
循环条件(test_expression):是一个 boolean 类型的表达式,这个表达式决定是否继续执行循环体。
循环体(body_statement):如果条件允许,循环体会被反复执行。
迭代语句(iteration_statement):在一次循环体执行结束后,对循环体条件进行求值,通常用于控制循环条件中的变量,使得循环在合适的时候结束。
while 结构
(init_statement);
while (test_expression) {
body_statement;
[iteration_statement];
}
形式一:
if (logic expression) {
statement;
}
int age = 20;
if (age > 18) {
String name = “Tom”;
System.out.println(“我叫” + name + “,已经” + age + “岁了,我成年了!”);
}
形式二:
if (logic expression) {
statement;
} else {
statement;
}
int age = 16;
if (age > 18) {
String name = “Tom”;
System.out.println(“我叫” + name + “,已经” + age + “岁了,我成年了!”);
} else {
System.out.println(“我还未成年!”);
}
形式三:
if (logic expression) {
statement;
} else if (logic expression) {
statement;
} else {
statement;
}
if (age >= 0 && age <= 10) {
System.out.println(“少年”);
} else if (age <= 18) {
System.out.println(“青少年”);
} else if (age <= 30) {
System.out.println(“青年”);
} else if (age <= 50) {
System.out.println(“中年”);
} else {
System.out.println(“老年”);
}
switch 结构
swtich 语句是有控制表达式和多个 case 标签块组成。在控制表达式中,只允许出现 byte、short、int、char四种基础数据类型,在JDK1.7以后,支持 String 类型的控制表达式。
switch (expression) {
case condition1 : {
statement;
break;
}
case condition2 : {
statement;
break;
}
default : {
statement;
break;
}
}
String color = “red”;
switch (color) {
case “red”: {
System.out.println(“红色”);
break;
}
case “blue”: {
System.out.println(“蓝色”);
break;
}
case “green”: {
System.out.println(“绿色”);
break;
}
default: {
System.out.println(“没有找到”);
break;
}
}
while 结构
(init_statement);
while (test_expression) {
body_statement;
[iteration_statement];
}
int sum = 0;
int i = 1;
while (i <= 10) {
sum = sum + i;
i++;
}
do-while 结构
(init_statement);
do {
body_statement;
[iteration_statement];
} while (test_expression)
for 循环
语法:
for ([init_statement]; test_expression; [iteration_statement]) {
body_statement;
}
实例
int sum = 0;
for (int i = 1; i <= 28; i++) {
sum = sum + i;
}
System.out.println(sum);
在实际的开发中,对于已知循环次数的遍历,一般使用 for 循环。而且 for 循环的应用场景要比 while 循环多。