双非大二生冲java后端实习的学习记录

0 阅读11分钟

Java入门快速通关笔记

双非大二冲 Java 后端实习|Java 基础入门笔记

作为一名双非大二软件工程专业的学生,现阶段正朝着 Java 后端实习的目标发力。回顾 Java 入门阶段的学习,从环境搭建到基础语法,再到流程控制,看似简单的知识点里藏着不少容易踩的坑。结合之前学习中遇到的疑问和踩过的雷,我将 Java 基础核心概念、流程控制关键要点 以及入门阶段的高频疑问,整理成这篇入门笔记。既作为自己的知识复盘,也希望能给和我一样的初学者提供一些参考。

一、开篇说明:入门笔记的定位

本篇笔记聚焦Java 入门核心模块,涵盖「Java 基础语法」「Java 方法」「Java 流程控制」三大板块。前期学习时节奏较快,由于并未一开始使用该博客记录Java的日常学习,对部分基础概念并未做出实时的总结的层面,缺乏系统梳理;从数组章节开始,我会进行精细化学习并实时记录。因此,本篇笔记主要对前期核心知识点进行重点提炼和误区总结,搭配简洁的代码示例和易懂的解析,帮自己夯实基础,为后续数组、面向对象等核心内容的学习铺路。

(同理,在数组之前的基础Java代码我在idea上有过大量的基层代码编写,但在这里为了学习进度的关系我就不附加代码解释了,但在数组之后的学习还有之前的重要代码我会做些许的整理)

二、Java 基础语法:入门必避的“基础坑”

Java 基础语法是构建所有程序的基石,看似简单的关键字、数据类型、输入输出,实则藏着很多初学者容易忽略的细节。结合之前的学习疑问,我将核心知识点和易错点以及目录整理如下:

目录:

1.数据基础认知

2.流程控制使用

3.流程控制题+解

4.方法的运用

===============================================================

1.数据基础认知

1.1数据类型:别混淆基本类型与引用类型

这是入门阶段最容易模糊的概念,尤其是在后续学习方法传参时,这个知识点会直接影响对代码逻辑的理解。

1.2 基本数据类型(8种):直接存储数据值,占用固定内存空间,包括  byte 、 short 、 int 、 long 、 float 、 double 、 char 、 boolean 。 ​

  • 易错点: long  类型赋值时,必须在数字后加  L (如  long num = 10000000000L; ),否则会被默认当作  int  处理,导致数值溢出; float  类型同理,需加  F ,这是一些简单的代码规范,平时需要注意。  

1.3引用数据类型:存储的是数据的内存地址,占用内存空间不固定,如字符串  String 、数组、类对象等。 ​

  • 易错点: String  是引用类型,而非基本类型,很多初学者会将其归为 8 种基本类型之一,这是核心误区。
  • String在使用过程中需要注意首字母大小写的问题,这是第一步;然后还要对它的类型有了解,对于字符串的应用上多使用String,其实对于计算机底层的逻辑上讲,所有的字符(汉字等)都是另一种形式的编码代替,就像是在诺大的一本字典里寻找各自的代表文字等字符;

1.4自增自减运算符(新手容易踩坑)

  • 第一是前置自增++a和后置自增a++的底层运行逻辑,这里要记清“先加后用”和“先用后加”的区别;第二是自增运算符在循环条件中的陷阱,比如for(int i=0;i<5;i++)和for(int i=0;i<5;++i)在单变量循环里效果一致,但在多变量嵌套循环里会有性能差异;第三是自增和赋值运算符的结合优先级问题,重点记住“赋值运算优先级低于自增运算”这个规则,避免a = b++这类表达式的计算错误。

1.5Java 包(package)与导入(import)核心笔记 包(package的作用:像“文件夹”一样,对类和接口进行分门别类,避免类名冲突,方便代码管理和维护。

  • 多层包之间用英文句点  .  间隔。
  • 命名形式通常为“公司域名倒序 + 项目名 + 模块名”,例如: com.amazon.data.entity (亚马逊数据实体包)。
  •  package  语句必须放在类文件的第一行,用来声明当前类属于哪个包。
  • 示例: package com.example.demo;  导入(import)的作用:用来声明当前类中使用的其他类来自哪个包,让编译器能够找到并加载这些类。
  •  java.lang  包下的类(如  String 、 System 、 Math )是 Java 语言的核心类,JVM 会自动导入,因此使用时可以不写  import  语句。
  •  语法示例:
  • 导入单个类: import java.util.Scanner; 
  • 导入整个包: import java.util.*; (不推荐,会降低编译效率) 常见面试/实战拓展
  • 静态导入(static import):可以直接导入类的静态方法和静态变量,使用时无需写类名。
  • 示例: import static java.lang.Math.PI;  之后可直接写  PI  而非  Math.PI 。
  • 包访问权限:如果一个类或成员没有访问修饰符(如  public 、 private ),则它具有“包访问权限”,即只能被同一个包内的其他类访问。
  • 全类名使用:当两个不同包中有同名类时(如  java.util.Date  和  java.sql.Date ),必须使用全类名来区分,例如: java.util.Date now = new java.util.Date(); 。
2.流程控制使用

2.1 输入输出:Scanner 类的“换行符陷阱”

2.1.1 Scanner的输入代码格式为:Scanner sc = new Scanner(System.in);

<凡是io流的类如果不关闭将会一直占用资源,要养成好的代码习惯,用完就关闭>

sc.close();这就是调用位于Scanner类的一个close方法来达到释放资源的效果,前面的sc是创建出来的对象,调用对象的方法等同于调用大类的方法,这会在面向基础和方法中有所提及。

2.2在练习流程控制、算法题时, Scanner  类是最常用的输入工具,但它的  next()  和  nextLine()  方法极易混用出错,这也是我之前调试代码时遇到的高频问题,这两个方式属于Scanner类里面的两个方法,类其中还会有很多判断方法,提一嘴hasNextInt()和hasNextFloat(),他们都是判断条件,若下一个数位int或float类型就结束循环,通常是在if等判断或while等循环语句中的条件中出现

以下代码是类似情况,对double类型的一个判断:

image.png

2.2.1 核心区别

  •  next() :只读取到空格为止,不会读取换行符,光标停留在当前行。
  •  nextLine() :读取整行内容,包括换行符,读取后光标移至下一行。 2.2.2 陷阱场景:当  next()  和  nextLine()  连续使用时, nextLine()  会读取到  next()  遗留的换行符,导致直接跳过输入。 解决方案:在  next()  后额外调用一次  nextLine()  吸收换行符

2.3 多种结构构建Java语法

【作者说:关于这个选择结构视频讲解内容比较简单,个人感觉也很好理解,代码上只用了三个简单代码实验,但是后面会有一个简单的小系统用到了if语句,switch语句,while循环还包括:方法调用,重载等手段,项目比较简单。纯手搓加上AI修正,后续会展现出来。当然这里的流程结构我会展现Switch选择结构和简单的for循环讲解,结构上也会有适当省略。】

主要内容及课题包括:顺序结构,if选择结构,Switch选择结构,while循环结构,dowhile循环结构,for循环结构以及break,continue等用法

2.3.1 Switch选择结构:

switch 语句常见陷阱

1. switch 只能判断:byte、short、int、char、String、枚举 不能判断 long、float、double、boolean,一用就报错。

2. case 后面必须是常量,不能是变量 例如  case a:  是错的,必须写固定值  case 1: 。

3. case 穿透问题(容易忘)

每个 case 结束必须写 break,否则会继续执行下面所有 case,这是最大漏洞。

4. default 可以写在任意位置,但建议放最后 如果 default 放前面又没 break,一样会穿透。

5. switch 不能写 > < >= <= 这种范围判断 switch 只能判断等值,不能判断区间,区间必须用 if。

6.基本语法:

    case  "c":
        System.out.println("你学习的语言是c" );
        break;
    case "Python":
        System.out.println("你学习的语言是Python" );
        break;
    case "go":
        System.out.println("你学习的语言是go" );
        break;
    case "Java":
        System.out.println("你学习的语言是Java");
        break;
    default:
        System.out.println("Unknown");
        System.exit(0);//若输出错误语言格式,这个用法将会在输出Unknown后结束,不会继续生成期末成绩
        break;
    <这是我做的关于编程语言与成绩分析的小系统上的代码内容,系统内运行基本完善,也有许多可以补充的内容,
但我打算后面学java可视化,javaweb和数据库系统原理的时候将这个系统做成网页版>
3.流程控制作业

【作者说:我在这里给了两道适合新手做的小题目,这两道题都运用了for循环plus版本,对新手理解for循环有极大的帮助,我在这里也深刻地认识并学习到for循环的基础嵌套。】

Problem 1:

P1.打印九九乘法表:

代码展示:

public static void main(String[] args) {
    for (int i = 1; i <=9; i++) {
        for (int x = 1; x <=i; x++) {
            System.out.print(i + "*" + x + "=" + (x*i) + "\t" );
        }
        System.out.println();
    }
}

运行结果展示:

image.png

Problem 2:

P2.打印三角形:(化简思想,大化小思想)

代码展示:

public static void main(String[] args) {
    //打印三角形
    for (int i = 1; i <= 5; i++) {
        for (int j = 5; j >= i; j--) {
            System.out.print(" ");
        }
        for (int j = 1; j <= i; j++) {
            System.out.print("*");
        }
        for (int j = 1; j < i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }
}

运行结果展示:

image.png

【作者说;在两个代码里,主要练习代码思维,就拿打印三角形代码中的4到5行代码输入空格来讲,就是三角形左边按一部分的倒直角三角形,等于说是把梯形左边的一部分挖掉了,这个运行过程有点难理解,就可以使用计算机编译器的断点调试方法来加深理解。在这两个题目代码中也共同涉及换行的大难题,比如说P1中的4,6行与P2中的5,8,11,13行的print与输出空格的输出语句,这是一个值得探讨与学习的地方,建议在循环中多使用多理解多收获。】

3.1 换行问题小总结

//println 输出完会换行

//print 输出完不会换行

/t 相当于“tab键”让控制台空格

4.方法的运用

【作者说;方法这一方面写的就比较少,因为上面很多的代码大多都离不开方法的调用比如代码程序的入口main方法就是一个非常常见且重要的方法,所以我主要说一下一些方法的调用格式和变量名(方法名)的规范,当然方法很多地方都会牵扯到面向对象基础,所以关于对象与方法之间的调用我也会在这里讲一小部分,在数组后面的面向对象章节我又会讲小部分。】

4.1 方法在类中的位置与归属

  • 方法是类的重要组成部分,定义在类的内部、类方法之外(与成员变量同级)。

  • 一个类可以包含多个方法,用于描述该类对象的行为或功能。

4.2 方法的调用方式

  • 基于类创建对象(实例化)后,通过一定格式展现,代码展示;
类名 对象名 = new类名();
对象名.方法();
  • 新创建的对象会自动拥有其所属类中定义的所有方法,可直接调用。->回顾2.1的内容中,Scanner中new出的新对象sc可以直接调用close(),Next()等方法。

4.3 方法的命名规范

-类成员/局部变量;首字母小写和驼峰原则 monthSalary(); -常量:大写字母和下划线 MAX_VALUE -类名:首字母大写和驼峰原则 Man,GoodMan -方法名:首字母小写和驼峰原则 run(),runRun()

4.4 方法与成员变量、局部变量的区分

  • 成员变量(属性):定义在类内、方法外,属于类的属性,整个类内都可访问。 ​
  • 局部变量:定义在方法体内部,仅在该方法执行期间有效,方法执行结束后变量失效。