2021-07-15 Java基础(一)

1. 编程

编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。说白了就是为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。

2. Java

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。

Java,由Sun Microsystems公司于1995年5月推出,它是一种可以编写跨平台应用软件、完全面向对象的程序设计语言。

不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

- 跨平台

所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。

- 面向对象

面向对象的方法主要是把事物给对象化,包括其属性和行为。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象,即:万物皆对象。
在这里插入图片描述

3. 开发者环境(JDK)、java虚拟机(JVM)、Java运行时环境(JRE)

JVM

Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。

JRE

Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包

如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JDK

Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等

JVM&JRE&JDK关系图:
在这里插入图片描述

4. java语言的特点

  • 简单易学(Java语言的语法与C语言和C++语言很接近)
  • 面向对象(封装,继承,多态)
  • 平台无关性(Java虚拟机实现平台无关性)
  • 支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)
  • 支持多线程(多线程机制使应用程序在同一时间并行执行多项任)
  • 健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)
  • 安全性

5.Java的数据类型

基本数据类型

  • 数值型

    • 整数类型(byte,short,int,long)
    • 浮点类型(float,double)
  • 字符型(char)

  • 布尔型(boolean)

引用数据类型

  • 类(class)
  • 接口(interface)
  • 数组([])

在这里插入图片描述

6.Java中的关键字

在这里插入图片描述

7.Java的访问修饰符

Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

public : 对所有类可见。使用对象:类、接口、变量、方法

在这里插入图片描述

8.Java中的运算符

在这里插入图片描述
https://www.cnblogs.com/gaobig/p/5913900.html

9.Java的流程控制

条件语句(if和Switch)

  1. if语句
    使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”,如果该表达式返回true,则执行其后的语句;若为false,则不执行if后的语句。可分为简单的if条件语句、if···else语句和if···else if多分支语句。

int a = 100;
if(a == 100) {
    System.out.println(a);
}

如上方代码,{}之间为复合语句,if为条件语句,翻译过来就是如果a等于100,则输出a的值,否则不执行。

如果if后只有一条语句,比如上述代码只有一条输出,可以不加{},但为了代码的可读性,以及防止代码过多出现不必要的错误,建议所有的if、else后都加上相应的{}。

  1. if…else语句
1 public class Getifelse {
 2 
 3     public static void main(String[] args) {
 4         int math = 80;        // 声明,数学成绩为80(及格)
 5         int english = 50;    // 声明,英语成绩为50(不及格)
 6         
 7         if(math >= 60) {    // if判断语句判断math是否大于等于60
 8             System.out.println("math has passed");
 9         } else {            // if条件不成立
10             System.out.println("math has not passed");
11         }
12         
13         if(english >= 60) {    // if判断语句判断english是否大于等于60
14             System.out.println("english has passed");
15         } else {            // if条件不成立
16             System.out.println("english has not passed");
17         }
18     }
19 
20 }

运行结果:
在这里插入图片描述

  1. if…else if多分支语句
 1 public class GetTerm {
 2 
 3     public static void main(String[] args) {
 4         int x = 40;
 5         
 6         if(x > 60) {
 7             System.out.println("x的值大于60");
 8         } else if (x > 30) {
 9             System.out.println("x的值大于30但小于60");
10         } else if (x > 0) {
11             System.out.println("x的值大于0但小于30");
12         } else {
13             System.out.println("x的值小于等于0");
14         }
15     }
16 
17 }

运行结果:
在这里插入图片描述

  1. switch语句
 1 import java.util.Scanner;
 2 
 3 public class GetSwitch {
 4 
 5     public static void main(String[] args) {
 6         Scanner scan = new Scanner(System.in);
 7         System.out.print("请输入今天星期几:");
 8         int week = scan.nextInt();
 9         
10         switch (week) {
11         case 1:
12             System.out.println("Monday");
13             break;
14         case 2:
15             System.out.println("Tuesday");
16             break;
17         case 3:
18             System.out.println("Wednesday");
19             break;
20         case 4:
21             System.out.println("Thursday");
22             break;
23         case 5:
24             System.out.println("Friday");
25             break;
26         case 6:
27             System.out.println("Saturday");
28             break;
29         case 7:
30             System.out.println("Sunday");
31             break;
32         default:
33             System.out.println("Sorry,I don't konw");
34             break;
35         }
36     }
37 
38 }

在这里插入图片描述

switch语句中表达式的值必须是整型或字符型,常量值1~n必须也是整型或字符型。switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

简单说一下switch语句是怎么执行的(重点,初学的朋友要注意)。首先switch语句先计算表达式的值,如果表达式的值与case后的常量值相同,则执行该case后的若干个语句,直到遇到break语句为止。如果没有break,则继续执行下一case中的若干语句,直到遇到break为止。若没有一个常量的值与表达式的值相同,则执行default后面的语句。default语句可选,如果不存在default语句,而且switch语句中的表达式的值与任何case的常量值都不相同,则switch不做任何处理。并且,同一个switch语句,case的常量值必须互不相同。

循环语句

1. while语句

while循环语句的循环方式为利用一个条件来控制是否要继续反复执行这个语句。
举例:1-10求和

 1 public class GetSum {
 2 
 3     public static void main(String[] args) {
 4         int x = 1;            // 定义初值
 5         int sum = 0;        // 定义求和变量,用于存储相加后的结果
 6         
 7         while(x <= 10) {
 8             sum += x;        // 循环相加,也即    sum = sum + x;
 9             x++;
10         }
11         System.out.println(sum);
12     }
13 
14 }

这就是一个从1加到10的代码,首先定义一个初值x为1,然后定义一个存储相加结果的变量sum为0,循环条件为x<=10,也就是每次判断x<=10是否成立,成立则继续循环。循环内第一句“sum +=x;”其实就是“sum = sum +x;”的另一种写法,是在sum的基础上加x,并赋给sum,那么此时sum的值为0+1=1了,然后x++,x自增1为2,判断x<=10,则继续循环,sum的值变为1+2=3,然后x++变为3,如此循环下去,直到x为11时退出循环,此时sum的值就是1+2+3+4+5+6+7+8+9+10最后的结果55了。

在while循环语句中,如果while语句后直接加分号,如while(a == 5);代表当前while为空语句,进入无线循环。
  
2. do…while语句

do···while循环语句与while循环语句的区别是,while循环语句先判断条件是否成立再执行循环体,而do···while循环语句则先执行一次循环后,再判断条件是否成立。也即do···while至少执行一次。

 1 public class Cycle {
 2 
 3     public static void main(String[] args) {
 4         int a = 10;
 5         int b = 10;
 6         
 7         // while循环语句
 8         while(a == 8) {
 9             System.out.println("a == " + a);
10             a--;
11         }
12         
13         // do···while循环语句
14         do {
15             System.out.println("b == " + b);
16             b--;
17         } while(b == 8);
18     }
19 
20 }

执行结果:
在这里插入图片描述
a、b都为10,先看while循环语句,进入while下语句块的条件是a == 8,很明显不成立,所以不执行,结果中没有关于a的结果,然后再看do···while循环语句,先执行一次do后的语句块,输出“b == 10”,然后判断while条件b == 8不成立,循环结束,所以结果只有一个do···while语句中执行的第一步b == 10。

3. for语句

for(表达式1; 表达式2; 表达式3)
{
    语句序列
}

其中,表达式1为初始化表达式,负责完成变量的初始化;表达式2为循环条件表达式,指定循环条件;表达式3为循环后操作表达式,负责修整变量,改变循环条件。三个表达式间用分号隔开

举例:1-100求和

 1 public class Circulate {
 2 
 3     public static void main(String[] args) {
 4         int sum = 0;
 5         
 6         for(int i=2; i<=100; i+=2) {
 7             sum += i;
 8         }
 9         
10         System.out.println(sum);
11     }
12 
13 }

说到for循环语句就不得提到foreach语句了,它是Java5后新增的for语句的特殊简化版本,并不能完全替代for语句,但所有foreach语句都可以改写为for语句。foreach语句在遍历数组等时为程序员提供了很大的方便。

for(元素变量x : 遍历对象obj) {
    引用了x的Java语句;
}
int array[] = {7, 8, 9};

for (int arr : array) {
     System.out.println(arr);
}

array是一个一维数组,其中有7、8、9三个值,现在要将这三个值打印到控制台上,用foreach语句相比for语句会简单很多。其中,在for的条件中,先定义了一个整型变量arr(只要和要遍历的数组名不同即可),冒号后则是要遍历的数组名,那么{}间就是要循环的内容了。

跳转语句

Java语言提供了三种跳转语句,分别是break语句、continue语句和return语句。

1. break语句

break语句刚刚在switch中已经见过了,是用来中止case的。实际上break语句在for、while、do···while循环语句中,用于强行退出当前循环,为什么说是当前循环呢,因为break只能跳出离它最近的那个循环的循环体,假设有两个循环嵌套使用,break用在内层循环下,则break只能跳出内层循环,如下:

 for(int i=0; i<n; i++) {    // 外层循环
    for(int j=0; j<n ;j++) {    // 内层循环
        break;
    }
}

2. continue语句

continue语句只能用于for、while、do···while循环语句中,用于让程序直接跳过其后面的语句,进行下一次循环。例如:输出10以内的所有奇数

 1 public class ContinueDemo {
 2 
 3     public static void main(String[] args) {
 4         int i = 0;
 5         
 6         while(i < 10) {
 7             i++;
 8             
 9             if(i%2 == 0) {    // 能被2整除,是偶数
10                 continue;    // 跳过当前循环
11             }
12             
13             System.out.print(i + " ");    
14         }
15     }
16 
17 }

这里if条件判断是否为偶数,如果是偶数则执行continue,直接跳出本次循环,不进行continue后的步骤(即不执行输出语句),然后下一次循环为奇数,输出i,运行结果如下:
在这里插入图片描述

3. return语句

Java中return用于方法,两个作用:

(1)返回方法指定类型的值(这个值总是确定的),也可以是对象
(2)方法的结束

两种形式:

  • 有返回类型 例如:return i;
  • 无返回类型 return;

一般方法前有void代表无返回值,没有void有返回值。

public  class TestReturn { 
    public static void main(String args[]) { 
       TestReturn t = new TestReturn(); 
        t.test1(); 
        t.test2(); 
    } 

    /** 
     * 无返回值类型的return语句测试 
     */ 
    public void test1() { 
        System.out.println("---------无返回值类型的return语句测试--------"); 
        for (int i = 1; ; i++) { 
            if (i == 4) return; 
            System.out.println("i = " + i); 
        } 
    } 

    /** 
     * 有返回值类型的return语句测试 
     * @return String 
     */ 
    public String test2(){ 
        System.out.println("---------有返回值类型的return语句测试--------"); 
        return "返回一个字符串"; 
    } 
}

运行结果:
---------无返回值类型的return语句测试--------

i = 1

i = 2

i = 3
---------有返回值类型的return语句测试-------

返回一个字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值