00.10小时学完Java基础.(w3schools 代码实验)-v02-38

203 阅读9分钟

前言(本教程使用方案)在文末,最有用的放在前,代码实验最有用.参考w3schools

简介//Introduction

主页//Home

  • 例01:注意要反复CV写实验报告,我们CV改一次,只影响输出结果要改哪里

    • public class HomeX01 {
        public static void main(String[] args) {
          System.out.println("Home");
        }
      }
      
    • 解析:这是一个最简单的Java程序,程序层层包裹,最外层public class Main{}​是一个大软件,中层public static void main(String[] args) {}​是软件的一个功能按钮,最内层System.out.println("Home");​是具体的功能实现,是输出Home​
    • public class HomeX01 {
        public static void main(String[] args) {
          System.out.println("Home01");
        }
      }
      

简介//Intro

  • 最新行情:此时是2023年9月,最新战报是Java很难找工作
  • 找工作难这个内卷的核心原因:供需失衡,供应(求职者供应量)也许是需求(企业对Java后端劳工的需求)的百倍,请您慎重考虑
  • 如何找到Java后端开发的工作:在Java后端程序员中,你只要足够优秀成为塔尖选手就不怕找不到工作

入门//Get Started

  • CMD命令行查看Java版本

    • java -version
      
  • 例01:当做软件CV到编译器,我们CV改一次,注意以后得类命名都用这节课的名字加X加例子的编号

    • public class GetStartedX01 {
          public static void main(String[] args) {
              System.out.println("GetStarted");
          }
      }
      
    • 解析:运行之后,你知道Hello World这里些什么,控制台就输出什么,知道这些即可
    • public class GetStartedX01 {
        public static void main(String[] args) {
          System.out.println("GetStarted01");
        }
      }
      

语法//Syntax

  • 例01:先建立一个类叫Main,编译器自动生成

    • public class SyntaxX01 {
      }
      
    • 去之前的代码CV出方法(有功能的代码块)
    • 	public static void main(String[] args) {
          System.out.println("GetStarted01");
       	 }
      
    • CV进去,改内部需要输出的内容为SyntaxX01,运行即可
    • public class SyntaxX01 {
          public static void main(String[] args) {
              System.out.println("SyntaxX01");
          }
      }
      
  • 注意,Java程序语法参考了英语语法.要理解每个英语单词的含义.

    • System:

      • (器官)系统;制度,体系,集团;(思想或理论)体系;制度;方法;体制;身体.
      • 理解为让这个Java系统做事情
    • out:

      • 使(击球员)出局, 淘汰;驱逐, 赶出;使熄灭;<英俚>(拳击中)击倒, 击昏;打球出界;<口>揭露(名人等)的同性恋身份.
      • 理解为把内容搞出来
    • println:

      • 打印;换行打印(Java 语言中的命令)
      • 理解为向编译器控制台打印内容,然后换行
    • ("");里面装需要输出的东西.

    • static:

      • 静止的;不变化的
      • 理解为固定在这的
    • Class

      • 班;课;阶级;上课;班级;种类;纲;优雅;社会等级;(某科目的)系列课程;同届毕业生
      • 理解为这是一个班级或者这是一个分类,和目录一样,以后要把同类的代码写在一起
    • void

      • 无效的;没有;空的;缺乏;空空如也
      • 理解为这里是否要返回什么值,用void就不用返回值这个功能,没有返回值

注释//Comments

输出//Output

打印文本//Print Text

打印数字//Print Numbers

变量//Variables

变量//Variables

打印变量//Print Variables

声明多个变量//Declare Multiple Variables

标识符//Identifiers

数据类型//Data Types

数据类型//Data Types

数字//Numbers

布尔值//Booleans

布尔值(扩展)//Booleans(extended)

角色//Characters

非基元类型//Non-primitive Types

类型转换//Type Casting

字符串//String

字符串//Strings-ok

例01 创建一个 String 类型的变量a99,并且为其赋值为ABC

  • String a99 = "ABCabc";
    

例02 输出对象

  • String a99 = "ABCabc";
    System.out.println(a99);
    

例03 输出对象长度

  • String a99 = "ABCabc";
    System.out.println(a99.length());
    

例04 大小写转换

  • String a99 = "ABCabc";
    System.out.println(a99.toUpperCase());   // ABCABC
    System.out.println(a99.toLowerCase());   // abcabc
    

例05 查找字符

  • 该方法返回索引(位置) 字符串中指定文本的首次出现 (包括空格)
  • String a99 = "ABCabc is a fat cat.";
    System.out.println(a99.indexOf("ABCabc")); //0
    System.out.println(a99.indexOf("is")); //7
    

传销//Concatenation

数字和字符串//Numbers and Strings

特殊字符//Special Characters

运算符和数学//Operators & Math

运算符//Operators

数学//Math

条件//Conditionals

如果...还//if...else

速记如果...还//Short Hand if...else

切换//Switch

循环//Loops

While 循环//While Loop

For 循环//For Loop

每个循环//For-Each Loop

休息/继续//Break/Continue

数组//Arrays

数组//Arrays

遍历数组//Loop Through an Array

多维数组//Multidimensional Arrays

方法//Methods

方法//Methods

方法参数//Method Parameters

方法重载//Method Overloading

范围//Scope

递归//Recursion

类//Classes

面向对象//OOP

类/对象//Classes/Objects

类属性//Class Attributes

类方法//Class Methods

构造函数//Constructors

修饰符//Modifiers

封装//Encapsulation

包/API//Packages / API

继承//Inheritance

多态性//Polymorphism

内部类//Inner Classes

抽象//Abstraction

界面//Interface

枚举//Enums

用户输入//User Input

日期//Date

数组列表//ArrayList

链表列表//LinkedList

哈希图//HashMap

哈希集//HashSet

迭代器//Iterator

包装类//Wrapper Classes

异常//Exceptions

正则表达式//RegEx

线程//Threads

拉姆达//Lambda

文件处理//File Handing

文件//Files

创建/写入文件//Create/Write Files

读取文件//Read Files

删除文件//Delete Files

前言

本教程的结构和特点

  • 参考:参考w3schools 代码实验,借鉴Java API文档和w3schools的极简风格.文章使用标准Markdown风格,大部分编程文档也是如此,ChatGPT的默认输出格式也参考了编程文档的风格.
  • 只留高频刚需内容:抛弃连篇累牍的中文废话,用简洁易懂的代码实验,让小白10小时入门Java基础,让入门者快速复习Java基础,防止浪费时间.
  • 学习本教程的前提:10小时学完Java基础是可行的,前提是认识英文,且有基本的代码基础,至少知道Hello Word的写法

学习方法讨论

  • 学代码太慢的原因:因为他们看了很多连篇累牍的Java教程,这些教程的本质是API观后感,和电影影评一样营养含量很低,用影评难以回溯电影,我们需要看到是剧本,还原本质,看完电影和剧本之后自己写写影评,看看影评,能增加很多吹嘘和探讨的能力,会很开心,但是想学习拍电影,就要多看电影,多看剧本,多体验人间疾苦,最重要的是多拍电影.学代码也是一样
  • 错误的学习方法,舍本逐末,非循序渐进:编程思想,深入源码,这类似于学习游泳需要循序渐进,但先下水,慢慢乱游,慢慢纠正姿势.而有些人直接研究水质,研究装备的品牌和类型,研究赞助商,研究姿势的速度差异,研究全世界的游泳冠军的战术,研究如何补充体能,研究如何选择游泳名师,研究如何到游泳馆,研究如何办卡省钱,研究如何去游泳馆省钱,一套下来,人就筋疲力竭了,最后还没学会游泳就花了很多时间很多钱,这些研究其实是有用的,但是相比直接开始乱游.
  • 参考游泳案例:从实践中学习,哪怕没有名师,从一米深的浅水区乱游从狗刨开始,不追求标准,很快就学会了,然后再学新的姿势即可,但是很多人不这样做,也许是被营销了,也许是逃避实干,毕竟纸上谈兵很安全,下水之后那怕是一米的浅水区都可能呛水迷眼耳朵进水.村里没有老师,孩子们在小河浅水区嬉戏之间就学会了游泳,哪些卖课程的,主要是营销,告诉大家一个泳装的阻力,告诉大家各种泳姿的学术定义,都搞出了学术探讨的感觉,这叫舍本逐末
  • 学习的比例与收益:学代码要避免舍本逐末,类似于学游泳,一天学游泳10小时,其中9.9小时都在看视频课程,都在看文字理论,那0.1小时的实操哪能让你快速学会
  • 总结:如何学编程,最简单的一条就是,多写代码,写代码的时间越多,编程学的快,中文夸夸其谈的理论看的越多,编程学的越慢.

如何使用本教程

  • 代码实验是核心,做中学的意义:

    • 本文全篇就是一个代码实验,编程市实验科学不是理论科学,很多人把学编程变成了背诵变成了填空题简答题,这是可以的,但是这也是低效的,会让人丧失学习的信心,没了探索的乐趣.这些人是不会学习的人,把计算机这门工科硬生生变成了理科分析理论,变成了文科大量背诵,偏离了工科的本质.
    • 工科的本质就是做实验,做产品,做中学,实践出真知.代码实验做多了,自然就总结出人人都能总结出的理论了,类似吃了糖就容易形容澳洲龙虾的味道,如果没吃过澳洲龙虾听了别人说的味道的论文或者描述,难以反推出澳洲龙虾的味道,很多人就把时间都放在了看别人的描述上(Java的描述),每天努力看大量的吃播和论文,十分努力学习澳洲龙虾的味道,而不去直接品尝澳洲龙虾(直接写代码,反复运行,对比实验).无效努力只会让人越努力越失败,看了100篇关于澳洲龙虾的学术论文但不去品尝也不知道澳洲龙虾的真实味道.
  • 如何进行代码实验:

    • 每次只引入最小的知识点,然后多次实验,这样不用中文描述,只看输出的变化,大家就知道这东西有什么用了.
    • 遇到困惑的就去实验,实验不出结果再去查,或者问AI.

前言总结

  • 关于代码:

    • 代码实验我会逐渐增加案例,把差别用大量案例对比出来,这样传递信息最高效.
    • 类似让大家知道澳洲大龙虾和河沟里的小龙虾味道的差别直接让大家品尝,双例对比就够了,给再多的汉字描述是营销卖课或者欺骗消费者.
  • 关于汉字:

    • 我会逐渐减少,删减到最少,只留必要部分,因为人的精力有限,最高效的学习就是把时间都用在摄取高价值高频刚需的内容上.
    • 汉字描述虽然有价值,但是这是低价值,低频,非刚需的内容.汉字描述也是有用的,面试的时候大部分信息是用汉语交流,这时候就要纸上谈兵夸夸其谈了,汉字部分,我们也叫其八股文,我会在另一篇文章更新,让大家不懂代码也能让面试官觉得熟悉这门技术,这就是八股文这个词的内核,把工科当做理科来分析理论,当做文科背诵.
  • 关于英文:

    • 代码本身就很容易懂,因为功能都写在英文名中,命名很生动形象,因此翻译英文是可以让人恍然大悟的,毕竟几十年前搞计算机名词翻译的人文化水平一般且不是中英文专家,他们在文学和英语或是汉语的造诣比较差,导致翻译出了很多本身不具有含义只有他自己懂古怪名词.
    • 学习这些古怪名词必须查阅解释,才能知道这种类似乱码符号的名词有什么含义,这样大大降低了人脑处理编程信息的效率,代码编程英文在编程无意义符号,再变成中文概念,再记忆,很容易劝退初学者.
    • 最好的办法是溯源,直接看英文,常用的相关的英文很少只有几百个,也可以看看港澳台的翻译,那边的翻译更追求见名知意,很少会把本来就通俗易懂的英文单词变成高大上的让人一头雾水的学术名词.
  • 关于更新:

    • 我会持续更新本文,每日更新.
    • 先会用再纸上谈兵,这是正确的步骤,类似企业家发财之后再搞一套无法再现的成功方法,来营销自己,面试就是这样.纸上谈兵是应试,是涨薪的最佳方案,但能工作是底线,面试进去之后无法完成任务,只会过不了试用期就被开除,所以会用代码是最重要的,其次才是总价代码的中文观后感.
  • 更新方向:

    • 此后我把代码比例调整到90%,中文删减到10%.

    • 要带来最容易懂的代码实验教程.

    • 大家要把代码运行起来,看实验结果,从输出的差别就搞懂了代码的用处,代码只不过是分装好的APP,Java API文档就是菜单,列出了很多按钮,常用的按钮会按就行.

      • 类比例子:切勿在学电脑的时候还没学会用电脑就开始研究键盘中每个按钮的材质,原理,供应商.迷失于细节是很可悲的,很错误的学习方法.虽然网上有大量的教程让我们迷失于细节,让很多还不能写项目的人花几个月时间研究源码,背诵八股,生产了最后练CRUD都干不了的纸上谈兵高手,无法给企业创造价值也就无法就业.舍本逐末的可怜虫.要循序渐进,先会用代码,再搞CRUD,能完成最简单工作了,这时候是个入门程序员了,再用那些纸上谈兵的东西提升思维境界.
    • 核心:通过大量代码实验,让我们熟悉Java语言,此后我将用此方法更新Spring篇,MySQL篇.