Java基础核心总结

234 阅读12分钟

Java概述

什么是Java?

Java是Sun Microsystems于1995年首次发布的一种编程语言和计算平台。编程语言还比较好理 解,那么什么是计算平台呢?

计算平台是在电脑中运行应用程序(软件)的环境,包括硬件环境和软件环境。一般系统平台 包括一台电脑的硬件体系结构、操作系统、运行时库。

Java是快速,安全和可靠的。从笔记本电脑到数据中心,从游戏机到科学超级计算机,从手机到互联 网,Java无处不在! Java主要分为三个版本

• JavaSE(J2SE)(Java2 Platform Standard Edition, java平台标准版)

• JavaEE(J2EE)(Java 2 Platform,Enterprise Edition, java平台企业版)

• JavaME(J2ME)(Java 2 Platform Micro Edition, java平台微型版)。

Java的特点

• Java是一门面向对象的编程语言

什么是面向对象?面向对象(Object Oriented)是一种软件开发思想。它是对现实世界的一种抽象, 面向对象会把相关的数据和方法组织为一个整体来看待。

相对的另外一种开发思想就是面向过程的开发思想,什么面向过程?面向过程(Procedure

Oriented)是一种以过程为中心的编程思想。举个例子:比如你是个学生,你每天去上学需要做几件 事情?

起床、穿衣服、洗脸刷牙,吃饭,去学校。一般是顺序性的完成一系列动作。

class student {

        void student_wakeUp(){...}

        void student_cloth(){...}

        void student_wash(){...}

        void student_eating(){...}

        void student_gotoSchool(){...}

而面向对象可以把学生进行抽象,所以这个例子就会变为

class student(){

        void wakeUp(){...}

        void cloth(){...}

        void wash(){...}

        void eating(){...}

        void gotoSchool(){...}

可以不用严格按照顺序来执行每个动作。这是特点一。

-Java摒弃了 C++中难以理解的多继承、指针、内存管理等概念;不用手动管理对象的生命周期, 这是特征二。

-Java语言具有功能强大和简单易用两个特征,现在企业级开发,快速敏捷开发,尤其是各种框架 的出现,使Java成为越来越火的一门语言。这是特点三。

・Java是一门静态语言,静态语言指的就是在编译期间就能够知道数据类型的语言,在运行前就能 够检查类型的正确性,一旦类型确定后就不能再更改,比如下面这个例子。

public void foo() {
    int x = 5;
    boolean b = x;
}

静态语言主要有 Pascal, Perl, C/C++, JAVA, C#, Scala 等。

相对应的,动态语言没有任何特定的情况需要指定变量的类型,在运行时确定的数据类型。比如有Lisp, Perl, PythonRubyJavaScript 等。

从设计的角度上来说,所有的语言都是设计用来把人类可读的代码转换为机器指令。动态语言是为了能 够让程序员提高编码效率,因此你可以使用更少的代码来实现功能。静态语言设计是用来让硬件执行的 更高效,因此需要程序员编写准确无误的代码,以此来让你的代码尽快的执行。从这个角度来说,静态 语言的执行效率要比动态语言高,速度更快。这是特点四。

-Java具有平台独立性和可移植性 Java有一句非常著名的口号:Write once, run anywhere,也就是一次编写、到处运行。为什么 Java能够吹出这种牛批的口号来?核心就是JVM。我们知道,计算机应用程序和硬件之间会屏蔽很多 细节,它们之间依靠操作系统完成调度和协调,大致的体系结构如下

image.png

那么加上Java应用、JVM的体系结构会变为如下:

image.png

Java是跨平台的,已编译的Java程序可以在任何带有JVM的平台上运行。你可以在Windows平台 下编写代码,然后拿到Linux平台下运行,该如何实现呢?

首先你需要在应用中编写Java代码;

用Eclipse或者javac把Java代码编译为.class文件;

然后把你的.class文件打成.jar文件;

然后你的.jar文件就能够在Windows  Mac OS X Linux系统下运行了。不同的操作系统有不同的 JVM实现,切换平台时,不需要再次编译你的Java代码了。这是特点五。

Java开发环境配置

这个地方不再多说了,网上有很多教程配置的资料可供参考。

Java基本语法

数据类型

在Java中,数据类型只有四类八种

•整数型:byte、short、int、long

byte也就是字节,1 byte = 8 bits, byte的默认值是0 ;

short占用两个字节,也就是16位,1 short = 16 bits,它的默认值也是0 ;

int占用四个字节,也就是32位,1 int = 32 bits,默认值是0 ;

long占用八个字节,也就是64位,1 long = 64 bits,默认值是0L;

所以整数型的占用字节大小空间为long > int > short > byte

・浮点型

浮点型有两种数据类型:float和double

float是单精度浮点型,占用4位,1 float = 32 bits,默认值是0.0f;

double是双精度浮点型,占用8位,1 double = 64 bits,默认值是0.0d;

・字符型

字符型就是char, char类型是一个单一的16位Unicode字符,最小值是\u0000 (也就是0 ) 最大值是\uffff (即为65535) , char数据类型可以存储任何字符,例如char a = 'A'。

・布尔型

布尔型指的就是boolean, boolean只有两种值,true或者是false,只表示1位,默认值是false。

以上x位都指的是在内存中的占用。

数据类型内存默认值
byte8位0
short16位0
int32位0
long64位0L
float32位O.Of
double64位O.Od
char16位\u0000
boolean8位fals

基础语法

•大小写敏感:Java是对大小写敏感的语言,例如Hello与hello是不同的,这其实就是Java的字 符串表示方式

•类名:对于所有的类来说,首字母应该大写,例如 MyFirstClass

•包名:包名应该尽量保证小写,例如 my.first.package

•方法名:方法名首字母需要小写,后面每个单词字母都需要大写,例如 myFirstMethod()

运算符

运算符不只Java中有,其他语言也有运算符,运算符是一些特殊的符号,主要用于数学函数、一些类 型的赋值语句和逻辑比较方面,我们就以Java为例,来看一下运算符。

-赋值运算符

赋值运算符使用操作符=来表示,它的意思是把=号右边的值复制给左边,右边的值可以是任何常 数、变量或者表达式,但左边的值必须是一个明确的,已经定义的变量。比如int a = 4

但是对于对象来说,复制的不是对象的值,而是对象的引用,所以如果说将一个对象复制给另一个对 象,实际上是将一个对象的引用赋值给另一个对象。

-算数运算符

算数运算符就和数学中的数值计算差不多,主要有

运算符说明
+
-
*
/
%取余

算数运算符需要注意的就是优先级问题,当一个表达式中存在多个操作符时,操作符的优先级顺序就 决定了计算顺序,最简单的规则就是先乘除后加减,()的优先级最高,没必要记住所有的优先级顺 序,不确定的直接用0就可以了。

•自增、自减运算符

这个就不文字解释了,解释不如直接看例子明白:

int a = 5;
b = ++a;
c = a++;

比较运算符

比较运算符用于程序中的变量之间,变量和自变量之间以及其他类型的信息之间的比较。

比较运算符的运算结果是boolean型。当运算符对应的关系成立时,运算的结果为true,否则为 false。比较运算符共有6个,通常作为判断的依据用于条件语句中。

image.png

-逻辑运算符

逻辑运算符主要有三种,与、或、非

image.png

下面是逻辑运算符对应的true/false符号表

-按位运算符 按位运算符用来操作整数基本类型中的每个比特位,也就是二进制位。按位操作符会对两个参数中对 应的位执行布尔代数运算,并最终生成一个结果。

image.png

如果进行比较的双方是数字的话,那么进行比较就会变为按位运算。

按位与:按位进行与运算(AND),两个操作数中位都为1,结果才为1,否则结果为0。需要首先把比 较双方转换成二进制再按每个位进行比较

按位或:按位进行或运算(OR),两个位只要有一个为1,那么结果就是1,否则就为0。

按位非:按位进行异或运算(XOR),如果位为0,结果是1,如果位为1,结果是0。

按位异或:按位进行取反运算(NOT),两个操作数的位中,相同则结果为0,不同则结果为1。

-移位运算符

移位运算符用来将操作数向某个方向(向左或者右)移动指定的二进制位数。

运算符含义
»右移运算符eg: 8 » 1 = 4
«左移运算符eg: 9 « 2 = 36

-三元运算符

三元运算符是类似if...else...这种的操作符,语法为:条件表达式?表达式1 :表达式2。问号 前面的位置是判断的条件,判断结果为布尔型,为true时调用表达式1,为false时调用表达式2。

Java执行控制流程

Java中的控制流程其实和C —样,在Java中,流程控制会涉及到包括if-elsewhiledo-whileforreturnbreak以及选择语句switch。下面以此进行分析

条件语句

条件语句可根据不同的条件执行不同的语句。包括if条件语句与switch多分支语句。

if条件语句

if语句可以单独判断表达式的结果,表示表达的执行结果,例如:

int a = 10;
if(a > 10){
return true;
}
return false;

if...else条件语句

if语句还可以与else连用,通常表现为如果满足某种条件,就进行某种处理,否则就进行另一种处 理

int a = 10;
int b = 11;
if(a >= b){
    System.out.println("a >= b");
}else{
    System.out.println("a < b");
 }

if后的0内的表达式必须是boolean型的。如果为true,则执行if后的复合语句;如果为false,则执 行else后的复合语句。

if...else if多分支语句

上面中的if...else是单分支和两个分支的判断,如果有多个判断条件,就需要使用if...else if

int x = 40;
if(x > 60) {
    System .out. println("x 的值大于 60");

} else if (x > 30) {
    System.out.println("x 的值大于 30 但小于 60");

} else if (x > 0) {
    System.out.println("x 的值大于 0 但小于 30");
} else {
    System.out.println("x 的值小于等于 0”);
}

switch多分支语句

一种比if...else if语句更优雅的方式是使用switch多分支语句,它的示例如下

switch (week) {
        case 1:
        System.out.println("Monday");
        break;
        case 2:
        System.out.println("Tuesday");
        break;
        case 3:
        System.out.println("Wednesday");
        break;
        case 4:
        System.out.println("Thursday");
        break;
        case 5:
        System.out.println("Friday");
        break;
        case 6:
        System.out.println("Saturday");
        break;
        case 7:
        System.out.println("Sunday");
        break;
        default:
        System.out.println("No Else");
        break; }

循环语句

循环语句就是在满足一定的条件下反复执行某一表达式的操作,直到满足循环语句的要求。使用的循环

语句主要有 fordo...while()while ,

while循环语句

while循环语句的循环方式为利用一个条件来控制是否要继续反复执行这个语句。while循环语句的格式 如下

while(布尔值){
表达式
}

它的含义是,当(布尔值)为true的时候,执行下面的表达式,布尔值为false的时候,结束循环,布尔 值其实也是一个表达式,比如

int a = 10;
while(a > 5){
      a--; 
   }

do...while 循环

while与do...while循环的唯一区别是do...while语句至少执行一次,即使第一次的表达式为false。而 在while循环中,如果第一次条件为false,那么其中的语句根本不会执行。在实际应用中,while要比 do...while应用的更广。它的一般形式如下:

int b = 10;
do {
    System.out.println("b == " + b);
    b--;
} while(b == 1);

for循环语句

for循环是我们经常使用的循环方式,这种形式会在第一次迭代前进行初始化。它的形式如下

for(初始化;布尔表达式;步进){}

每次迭代前会测试布尔表达式。如果获得的结果是false,就会执行for语句后面的代码;每次循环结 束,会按照步进的值执行下一次循环。

逗号操作符

这里不可忽略的一个就是逗号操作符,Java里唯一用到逗号操作符的就是for循环控制语句。在表达式 的初始化部分,可以使用一系列的逗号分隔的语句;通过逗号操作符,可以在f。r语句内定义多个变 量,但它们必须具有相同的类型

for(int i = 1;j = i + 10;i < 5;i++, j = j * 2){}

for-each 语句

在Java JDK 1.5中还引入了一种更加简洁的、方便对数组和集合进行遍历的方法,即for-each语 句,例子如下:

int array[] = {7, 8, 9};
for (int arr : array) {
    System.out.println(arr);
}

跳转语句****

Java语言中,有三种跳转语句:breakcontinue return

break语句

break语句我们在switch中已经见到了,它是用于终止循环的操作,实际上break语句在for、while、 do-whil e循环语句中,用于强行退出当前循环,例如

for(int i = 0;i < 10;i++){
    if(i == 5){
    break;
    }
}

continue 语句

continue也可以放在循环语句中,它与break语句具有相反的效果,它的作用是用于执行下一次循环, 而不是退出当前循环,还以上面的例子为主:

for(int i = 0;i < 10;i++){
    System.out.printl(" i = " + i );
    if(i == 5){
        System.out.printl("continue ... ");
        continue;
        }
}

return 语句

return语句可以从一个方法返回,并把控制权交给调用它的语句。

public void getName() {
return name;
}

面向对象

下面我们来探讨面向对象的思想,面向对象的思想已经逐步取代了过程化的思想---面向过程,Java是 面向对象的高级编程语言,面向对象语言具有如下特征

-面向对象是一种常见的思想,比较符合人们的思考习惯;

・面向对象可以将复杂的业务逻辑简单化,增强代码复用性;

・面向对象具有抽象、封装、继承、多态等特性。

面向对象的编程语言主要有:C++、Java、C#等。

所以必须熟悉面向对象的思想才能编写出Java程序。