• 【Java】面向对象程序设计 基础语法笔记


    🚀Write In Front🚀
    📝个人主页:令夏二十三
    🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
    📣系列专栏:Java
    💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊

    目录

    1. 面向对象程序设计

    1.1 对象 object

    1.2 类 class

    1.3 面向对象的三大特性

    1.4 Java开发

    2. 第一个Java程序

    2.1 Java程序的基本构成

    2.2 JDK的文件组成

    2.3 Hello World

    2.4 输入输出

    2.4.1 使用Scanner类

    2.4.2 使用int及out

    输入输出字符

    输入输出行

     输入输出数字

    3. 数据运算、流控制和数组

    3.1 数据类型、变量与常量

    3.1.1 数据类型

    数据类型的划分

    基本类型和引用类型的差别

    Java基本数据类型

    逻辑型

    字符型

    转义符

    整型

    浮点型

    标识符

    3.2 运算符与表达式

    3.3 流程控制语句

    3.3.1 程序的注释

    3.3.2 分支语句

    3.3.3 循环语句

    3.4 数组

    3.4.1 数组概述

    3.4.2 数组的初始化

    静态初始化

    默认初始化

    3.4.3 数组元素的引用

    3.4.4 增强的for语句

    3.4.5 复制数组

    3.4.6 多维数组


    1. 面向对象程序设计

    1.1 对象 object

    在现实世界中:是客观世界中的一个实体

    在计算机世界中:是一个可标识的存储区域

    1.2 类 class

    具有共同属性和行为的对象集合,属性指的是变量,行为指的是方法。

    类是对象的模板,对象是类的实例(对象实例):

    1.3 面向对象的三大特性

    封装性:程序定义很多类,将属性和行为封装在类中,这样就可以将类的细节部分隐藏起来,用户只通过受保护的接口访问某个类。

    继承性:子类可以继承父类的属性和方法,便于进行分类。

    多态性:不同对象调用一个同名的方法可以产生不同的效果,效果由各自对于这个方法的定义所决定。

    1. class Animal {
    2. public void makeSound() {
    3. System.out.println("Animal is making a sound");
    4. }
    5. }
    6. class Cat extends Animal {
    7. public void makeSound() {
    8. System.out.println("Meow");
    9. }
    10. }
    11. class Dog extends Animal {
    12. public void makeSound() {
    13. System.out.println("Woof");
    14. }
    15. }
    16. public class PolymorphismExample {
    17. public static void main(String[] args) {
    18. Animal animal1 = new Cat();
    19. Animal animal2 = new Dog();
    20. animal1.makeSound(); // 输出 "Meow"
    21. animal2.makeSound(); // 输出 "Woof"
    22. }
    23. }

    1.4 Java开发

    java的开发工具是JDK。

    java的开发环境是JRE,JRE包括JVM和API。

    java中的class文件中包含的不是实际机器的CPU指令。

    2. 第一个Java程序

    2.1 Java程序的基本构成

    2.2 JDK的文件组成

    2.3 Hello World

    1. public class HelloWolrd {//创建一个类
    2. public static void main(String[] args){//创建main方法,相当于C里的main函数
    3. System.out.print("Hello,world!");//print不换行,println换行
    4. }
    5. }

    2.4 输入输出

    2.4.1 使用Scanner类

    1. package Week_5;
    2. import java.util.Scanner; //使用Scanner类
    3. public class IOlearning{
    4. public static void main(String[] args){
    5. Scanner scanner = new Scanner(System.in);
    6. System.out.print("请输入一个数:");
    7. int a = scanner.nextInt();
    8. /*
    9. 这里使用nextInt()方法接收一个整数的输入;
    10. 还可以使用nextDouble()方法接收实数的输入;
    11. 使用next()方法接收下一个单词的输入。
    12. */
    13. System.out.printf("%d的平方是%d\n", a, a * a);
    14. /*
    15. 这里的printf使用方法类似于C语言,可以在输出中插入数据;
    16. */
    17. }
    18. }

    2.4.2 使用int及out

    这里要注意try-catch语句的格式。

    输入输出字符
    1. package Week_5;
    2. import java.io.*; //使用IO包
    3. public class Inout {
    4. public static void main(String[] args){
    5. char c = ' ';
    6. System.out.print("please input a char:");
    7. try{ //要用try语句,声明是试图输入这个数,不一定符合输入规则
    8. c = (char) System.in.read();
    9. }catch(IOException e){} //catch语句表明记录IO错误
    10. System.out.println("You have entered:"+c);
    11. }
    12. }
    输入输出行
    1. package Week_5;
    2. import java.io.*;
    3. public class Inoutline {
    4. public static void main(String[] args){
    5. String s = " ";
    6. try{ //新建一个行输入的缓冲方法,缓冲方法里再新建一个输入流读取方法,这样就可以读取一整行的输入
    7. BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    8. s = in.readLine(); //记住这个读取行的方法后面的Line要大写
    9. }catch(IOException e){}
    10. System.out.println(s);
    11. }
    12. }
     输入输出数字
    1. package Week_5;
    2. import java.io.*;
    3. public class Inoutnumber {
    4. public static void main(String[] args){
    5. String s = " ";
    6. int n = 0;
    7. try{
    8. BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    9. System.out.print("Please input an int: ");
    10. s = in.readLine();
    11. n = Integer.parseInt(s); //加了个转换方法
    12. }catch(IOException e){}
    13. System.out.print("You have input "+n);
    14. }
    15. }

    3. 数据运算、流控制和数组

    3.1 数据类型、变量与常量

    3.1.1 数据类型

    数据类型的划分

    基本类型和引用类型的差别

    实际上,基本类型的数据是直接存储在对应的栈里的,而引用类型的数据在栈里只存储了其地址,真正的数据存放地是地址所指向的堆,类似于C里的指针。

    Java基本数据类型

    基本数据类型的自动提升

    byte -> short -> int -> long -> float -> double

    char -> int

    数据类型强制转换和C++一样,注意进行强制类型转换时不能超出表数范围即可。

    逻辑型

    字符型

    转义符

    整型

    浮点型

    标识符

    3.2 运算符与表达式

    算术运算符:*    /    %    +    -

    关于 / :运算对象都为整数,则为整除;运算对象有浮点数,则为实数除法。

    算术赋值符:+=    -=    *=    /=    %=

    关系运算符:>    >=    <    <=    ==     !=

    字符串连接符:+

    一元运算符:++     --

    三目运算符:A?B:C

    逻辑运算符:&    |    ^    !    

    记住 ^ 不是乘方,而是异或,只有两个对象不同,真值才是true!

    短路运算符:&&    ||

    &&:第一个操作数为假则不判断第二个操作数

    ||:第一个操作数为真则不判断第二个操作数(和C++里的一样)

    移位运算符:只能用于byte,short,int,long

    移位方式表达式含义
    符号右移num>>nnum/2^n
    无符号右移num>>>n
    符号左移num<num*2^n

    3.3 流程控制语句

    3.3.1 程序的注释

    3.3.2 分支语句

    if-else语句和switch语句,和C++一模一样。

    if-else分支语句代码示例如下,这里做了一个简单的分数评价程序:

    1. package Week_5;
    2. import java.io.*;
    3. public class Controlif {
    4. public static void main(String[] args){
    5. int n = 0;
    6. String s = " ";
    7. System.out.print("Please enter your score: ");
    8. try{
    9. BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    10. s = in.readLine();
    11. n = Integer.parseInt(s);
    12. }catch(IOException e){}
    13. if (n > 100 | n < 0)
    14. System.out.print("Wrong Score!");
    15. else if (n >= 90)
    16. System.out.print("Excellent!");
    17. else if (n >= 80)
    18. System.out.print("Standout!");
    19. else if (n >= 60)
    20. System.out.print("Good!");
    21. else
    22. System.out.print("Come on!");
    23. }
    24. }

    switch分支语句代码示例如下,这是一个简单的加减乘除计算器:

    1. package Week_5;
    2. import java.io.*;
    3. import java.util.*;
    4. public class Controlswitch {
    5. public static void main(String[] args){
    6. int a = 0, b = 0, c = 0;
    7. System.out.print("Please enter two numbers: ");
    8. Scanner scanner = new Scanner(System.in);
    9. a = scanner.nextInt();
    10. b = scanner.nextInt();
    11. System.out.println("Please choose your compute method: 1. add 2. minus 3. multiplication 4. division");
    12. c = scanner.nextInt();
    13. switch(c){
    14. case 1:
    15. System.out.printf("%d + %d = %d", a, b, a + b);
    16. break;
    17. case 2:
    18. System.out.printf("%d - %d = %d", a, b, a - b);
    19. break;
    20. case 3:
    21. System.out.printf("%d * %d = %d", a, b, a * b);
    22. break;
    23. case 4:
    24. System.out.printf("%d / %d = %d", a, b, a / b);
    25. break;
    26. default:
    27. System.out.print("Wrong enter!");
    28. }
    29. }
    30. }

    3.3.3 循环语句

    同C++完全一样,分为for循环语句、while循环语句和do-while循环语句。

    for循环语句代码示例如下,这是一个求阶乘的简单程序:

    1. package Week_5;
    2. import java.util.*;
    3. public class Controlfor {
    4. public static void main(String[] args){
    5. int n = 0, ans = 1;
    6. Scanner scanner = new Scanner(System.in);
    7. n = scanner.nextInt();
    8. for (int i = 1; i <= n; i++) {
    9. ans *= i;
    10. }
    11. System.out.print(ans);
    12. }
    13. }

    while循环语句代码示例如下,这是一个求阶乘之和的简单程序:

    1. package Week_5;
    2. import java.util.*;
    3. public class Controlwhile {
    4. public static void main(String[] args){
    5. int n = 0, ans = 0;
    6. Scanner scanner = new Scanner(System.in);
    7. n = scanner.nextInt();
    8. while (n > 0) {
    9. ans += n * n;
    10. n--;
    11. }
    12. System.out.print(ans);
    13. }
    14. }

    3.4 数组

    3.4.1 数组概述

    数组,顾名思义,是多个相同类型数据的组合。

    一维数组的声明方式如下:

    1. int[] a;
    2. double []b;
    3. boolean c[];

    可以看出,方括号可以贴近数组变量名,也可以贴近数组名;可以写到变量名的前面,也可以写到变量名的后面。

    3.4.2 数组的初始化

    数组的声明和初始化可以写在同一句里,声明完后可以对数组元素赋值:

    1. int[] a = new int[5];
    2. a[0] = 3;
    3. a[1] = 6;
    4. a[2] = 9;

    但是,在Java里,声明数组时不能指定其长度,也就是直接写出数组元素的个数,这样是不符合规则的,因为在Java里,数组只是引用类型,声明之后只是在栈上取一个地方存数组真正存放数据的堆的地址。

    静态初始化

    可以不new,这样就默认new一个堆来放数组元素:

    1. double []b = {1.2, 3.4, 5.6,}; // 最后多一个逗号没问题
    2. double []c = new double[]{1.1, 2.2, 3.3, 4.4, 5.5};
    默认初始化

    数组一经分配空间,其中的每个元素就会被隐式初始化,例如初始化一个整形数组,其中每个元素都被初始化为0。

    3.4.3 数组元素的引用

    数组元素的方式和C++一致,都是使用从0到n-1的下标来引用。

    不同的是,在Java里,每个数组都有一个属性length指明它的长度,在使用for循环遍历数组的时候可以使用length来表示数组长度:

    1. int []ages = new int[10];
    2. for (int i = 0; i < ages.length; i++)
    3. System.out.println(ages[i]);

    3.4.4 增强的for语句

    增强的for语句和python里的类似,但是这种语句在Java里是只读式遍历,不能进行赋值等其他操作:

    1. int[] years = new int[10];
    2. for (int year : years) // 这里的冒号可以看作python里的in,表示取数组里的每个元素
    3. System.out.println(year);

    3.4.5 复制数组

    Java里的System.arraycopy方法提供了数组元素复制的功能:

    1. //原数组,复制的来源
    2. int[] source = {1, 2, 3, 4, 5, 6,};
    3. //目标数组,复制的目的地
    4. int[] dest = {1, 1, 1, 1, 1, 1, };
    5. // 复制方法,括号中的格式为(来源数组,来源数组的复制起点,目标数组,目标数组的接收起点,复制的元素个数)
    6. System.arraycopy(source, 0, dest, 1, source.length - 1);

    3.4.6 多维数组

    二维数组是数组的数组,对二维数组及以上的多维数组的声明和初始化应该按照从高维到低维的顺序进行。

    二维数组的初始化:

        int[][] a = {{1,2,3}, {4,5,6}, {7,8,9}};

    3.4.7 数组中的continue语句

    下面是一个使用continue语句跳转的代码示例:

    1. package Week_5;
    2. public class Array_test2 {
    3. public static void main(String[] args){
    4. int a[] = new int[7];
    5. for (int i = 0; i < a.length; i++){
    6. one_num: //为内层循环里的continue设置一个跳转的地方,否则它只会跳过对它来说最近的循环
    7. while(true){
    8. a[i] = (int) (Math.random()*36) + 1;
    9. for (int j = 0; j < i; j++){
    10. if (a[i] == a[j])
    11. continue one_num;
    12. }
    13. break;
    14. }
    15. for (int num : a)
    16. System.out.print(num + " ");
    17. System.out.println();
    18. }

    补充:随机数生成

    Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值

    公式:Math.random()*(n-m)+m,生成大于等于m小于n的随机数;

    例如:定义一个随机1到5(取不到5)的变量 [1,5)

    int number=(int)(Math.random()*(5-1)+1);
    int number = (int)(Math.random()*4+1);取值正好是[1,5)

    4. 课内代码笔记

    1. stringDemo

    将字符串转换为数字:

    int n = Integer.parseInt(s);

    将数字转换为字符串:

    String s = String.valueOf(n);

    2. ComputeArea

    输入的初始化和关闭:

    1. import java.util.Scanner;
    2. Scanner scanner = new Scanner(System.in);
    3. int n = scanner.nextInt();
    4. double m = scanner.nextDouble();
    5. String s = scanner.nextLine();
    6. scanner.close();

    3. TestSwitch

    switch语句的选择条件也可以是字符串,然后只需要把每一个case从数字改为不同的字符串即可;

    注意每个case都要有break,最后要有default。


     

  • 相关阅读:
    离线数仓(6):数仓理论之维度模型分类
    GLSL-WebGL着色器语言语法详解
    Array.from()的使用方法(数组去重,伪数组转为数组,数组浅克隆),Set和Map数据结构
    Java --- 期末复习卷
    Kafka中Consumer源码解读
    selenium 自动化测试
    docker使用php较老版本出现pecl无法安装扩展问题
    聊聊基于Alink库的主成分分析(PCA)
    店铺营收未达预期,用DataEase开源BI工具分析原因所在
    《HCIP-openEuler实验指导手册》1.1Apache安装与测试
  • 原文地址:https://blog.csdn.net/Summerison/article/details/132848855