二万字爆肝JavaSE基础知识

Posted 布小禅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二万字爆肝JavaSE基础知识相关的知识,希望对你有一定的参考价值。


文章目录

🙀 作者简介 🙀

大家好,我是布小禅,一个尽力让无情的代码变得生动有趣的IT小白,很高兴能偶认识你,关注我,每天坚持学点东西,我们以后就是大佬啦!

📢 博客主页:❤布小禅❤
📢 作者专栏:
❤Python❤
❤Java❤

❤力扣题❤

这是我刷第 21/100 道力扣简单题

前言

学Jaa的小伙伴越来越多,但是从哪学?如何学?已经有好多粉丝私信我这个问题了,

为了帮助大家解决这个需求,我呕心沥血一周,总结了这篇Java零基础知识点

相信我,入门Javase,看这一篇足够了!!

一、如何选择学习资料

很多人都问我:在哪学Java?B站有哪些好的Java教程?

现在网上Java视频一抓一大把,不能说哪个好哪个不好,但是你要选择的一定是适合自己的

· 首先,讲师的教学风格一定不能太枯燥,比如照着ppt念的,听着听着就磕头了

· 其次,教程讲的要够细致,不要嫌老师讲的啰嗦(除有基础的哈)对于刚入门来说,基础学扎实很重要,不要着急学后边的,一步步来

· 最后,关注下视频的弹幕及评论,最能反映出这个视频的质量

二、我推荐的

这里我推荐一套视频,动力节点的Java教程,B站排名第一的,比较不错,新手可以直接跟着学

知识点讲的挺细的,适合零基础的、转行的人来看

B站可以直接观看,亲测课程完整的没有任何缺失

https://www.bilibili.com/video/BV1Rx411876f

动力节点官方推荐语:

这套视频适合绝对零基础的小白来学习

课程内容细度前无古人,每个知识点以掰开了揉碎了的方式讲解

视频是基于JDK版本13进行讲解

主要包括:

· Java核心语法

· Java程序运行内存分析

· Java面向对象等内容

虽然视频是专门为小白量身打造,但是教程在每一个知识点上进行了很大的延伸,深度完胜三年工作经验程序员

我的推荐语:

视频讲解很透彻,很有深度,不理解的地方,可以选择反复观看几遍。

配套的除了上课的代码,也有一些相关的练习题,一些算法和数据结构的知识

当然最重要的就是需要多跟着视频敲代码!这个是至关重要的

好了 下面是对于这个教程的一些知识点的总结概要,零基础都会学的东西,可以说我们开发过程中需要的东西都都在里面了。有啥遗漏欢迎大家留言哈,我总归是一个人,不能啥都没有纰漏,哈哈哈~~

三、准备工作

1. 编辑器

总共说了四个编辑器:EditPlus、Eclipse、IntelliJ IDEA、MyEclipse

安装包和教程网上找

1.1 EditPlus

怎么说呢,极力推荐吧

新手用这个编辑器的话

可以让自己记住那些关键字

1.2 Eclipse

这个是很多学校教书都会用到的

集成开发环境,省事,有关键字提示

但是用多了就可能记不住关键字

1.3 IntelliJ IDEA

非常强大,非常炫酷的一个编辑器

集成开发环境

界面很美观,有许多插件可以使用

1.4 MyEclipse

属于Eclipse,是个人版

2. 计算机基础操作

有些基础知识是需要掌握的

2.1 显示文件后缀

有了这个我们就可以使用记事本编辑,然后转Java代码了

具体教程,百度一下就有了

2.2 常用DOS命令

ping命令

ipconfig命令

cd命令

3. 计算机语言发展史

3.1 机器语言

机器语言就是二进制代码

3.2 汇编语言

由符号,数字组成,难以理解

3.3 高级语言

诸如C语言,Java语言,简单易懂,可读性强的语言

4. Java语言简述

4.1 Java语言发展史

因为指针的不易学习,和不可移植性,所以出现了Java

4.2 Java语言特性

4.2.1 Java语言是简单的:

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

4.2.2 Java语言是面向对象的:

Java语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

4.2.3 Java语言是分布式的:

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

4.2.⒋ Java语言是健壮的:

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

4.2.⒌ Java语言是安全的:

Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

4.2.⒍ Java语言是体系结构中立的:

Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

4.2.⒎ Java语言是可移植的:

这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

4.2.⒏ Java语言是解释型的:

如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

4.2.⒐ Java是高性能的:

与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

4.2.⒑ Java语言是多线程的:

在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子类将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。

4.2.⒒ Java语言是动态的:

Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

4.3 Java语言程序

以.java的源代码,编译为.class文件再编译为字节码

每句Java代码以半角分号结束;

每段代码块以大括号包围{}

4.4 JDK,JRE,JVM

· JDK是Java开发环境

· JRE是Java运行环境

· JVM是Java虚拟机

JDK包括JRE,JRE包括JVM。

JVM是不能独立安装的。

JRE和JDK都是可以独立安装的。

有单独的JDK安装包。

也有单独的JRE安装包。

没有单独的JVM安装包。

安装JDK的时候:JRE就自动安装了,同时JRE内部的JVM也就自动安装了。

安装JRE的时候:JVM也就自动安装了。

4.5 环境配置

可以看这一篇博客

超详细的Java开发环境搭建指南(手把手带你开发第一个Java程序)

4.6 第一个java程序

找一个文件夹

创建一个Hello.java文件,将以下代码写入:

public class Hello{

  public static void main(Strinfg[] args){

    System.out.print("Hello World");  // 半角分号不能少

  }

}

然后

  • winr输入cmd启动命令行
  • cd切换文件夹
  • javac Hello.java
  • java Hello

四、基础语法

5. 语法

每个语言都有自己的语法,不同的语言,语法也不尽相同

5.1 注释

Java中含有三种注释格式,看以下程序:

/**

 \\* (javadoc注释,写在这里的注释信息会被JDKbin

 \\* 目录下的javadoc.exe工具提取并生成帮助文档)

 \\* 以下程序实现打印九九乘法表功能

 \\* @author bjpowernode-dujubin

 \\* @version 1.0

 \\* @since 1.0

 */public class NineByNine {

	

	/*

	 这是程序的入口,也称为主方法(多行注释)

	 类加载之后,程序从这里进来开始执行

	 */

	public static void main(String[] args) {

		for( int i = 1 ; i <= 9 ; i ++ ){ //外层循环9次,九九乘法表共9行

			for( int j = 1 ; j <= i ; j ++ ){

				System.out.print( j + "*" + i + "=" + i * j + " ");

			}

			System.out.println(); //换行(单行注释)

		}

	}

}

养成编写注释的好习惯,要有编写注释的意识(编写注释是程序员最基本的素质),当然,写注释也是有技巧的,不是所有位置都写,不是把写的代码原版翻译过来,高手往往在写注释的时候,不多不少,能够做到恰到好处,几句话就可以描述清楚程序的核心功能。

记住:注释的作用不在于表示代码的含义,而在于表示代码的功能。相信以后慢慢的培养,一定能够写一手漂亮的注释,当然,目前只需要掌握注释有哪几种,分别写到什么符号里就行了。

使用注释对HelloWorld程序进行解释说明,这里的描述先有个印象就行,后面大家会理解的:

//public关键字表示公开的//class关键字用来定义类//HelloWorld是类名public class HelloWorld {//定义一个公开类,起名HelloWorld

	//大括号要成对儿写

	//这里的大括号括起来的是“类体”

	//这是程序的入口,从这里进来执行

	//static表示静态的

	//void表示main方法执行结束之后不返回任何数据

	//以下行代码除了args可以修改为其它名字之外,剩下的都是固定写法

	//编写代码从现在养成好习惯:合理缩进//(你包含着我,或者说我比你低一级,就要缩进)

	public static void main(String[] args) {

		//这里的大括号括起来的是“方法体”

		//向控制台输出一句话

		//小括号里面的双引号必须是半角的,不能采用中文

		//这是一条java语句,java语句以“;”结尾,这里的“;”也是半角

		System.out.println("动力节点-口口相传的Java黄埔军校");

	}

	//类体中不能直接编写以下语句

	//System.out.println("动力节点-口口相传的Java黄埔军校");

}

5.2 主类,主方法

每个Java源代码文件(Xxx.java)中至多有一个主类,且文件名需要与主类名相同

每个Java源代码文件必须有一个主方法,用于启动程序。

Hello.java文件:

public class Hello{

  // 主类

  public static void main(Strinfg[] args){

    // 主方法

    System.out.print("Hello World");  // 半角分号不能少

    // 输出语句

  }

}// 括号不能少

5.3 标识符

什么是标识符?

简单来说,凡是可以由程序员自己来命名的单词都是标识符。

命名规则属于语法机制,必须遵守,不遵守命名规则表示不符合语法,编译器会报错。

命名规则:

1.标识符只能由数字、字母(包括中文)、下划线(_)、美元符号($)组成,不能含有其他符号。

2.标识符不能以数字开头。

3.关键字不能做标识符。例如:public、static、class…

4.标识符严格区分大小写。

5.标识符理论上没有长度限制。

标识符命名规范

命名规则是语法,不遵守会编译报错。命名规范是为了提高代码可读性。

命名规范:

1.见名知意(在起名时,最好一看这个单词就知道是啥意思)。

2.遵守驼峰命名方式。(驼峰:一高一低,一高一低…)

例如:IdentifierTest、UserName…

3.类名和接口名首字母大写,后面每个单词首字母大写。

例如:UserLogin、SortTest…

4.变量名和方法名首字母小写,后面每个单词首字母大写。

例如:userName、getPassword…

5.所有常量名全部大写,并且单词和单词之间采用下划线衔接。

例如:MAX_VALUE、MATH_PI…

每一天你会编写很多程序,你会遇到很多编译错误,也会遇到很多运行错误,你是否需要准备一个单独的文件来记录这些信息,以及记录这些信息是怎么导致的,原因是什么,怎么去解决的,解决办法是啥????

非常有必要的,要想成为一个调错高手,这个有必要进行一下。

5.4 关键字

关键字是由Java本身定义的单词,具有一定其他作用,比如class是定义类的关键字,int是声明整型变量的关键字

5.5 字面值

1 10 “12aa” 'a’这些都是字面值,在别的语言中叫常量

Hello.java文件:

public class Hello{

  public static void main(Strinfg[] args){

    System.out.print("123aaa"+"bas");  

  }

}

5.6 常量

使用final关键字定义的变量叫做常量,常量的值无法被修改,又叫最终量

public class JavaSE_Nw {

  public static void main(String[] args) {

    final int A = 3;//     A = 5;

    System.out.println(A);

  }

}

5.7 变量

变量的三要素?

数据类型、变量名、值 (值就是数据,就是字面量。)

int i = 100;

java main方法中的变量必须先声明,再赋值才能访问(必须手动赋值。)

int k;
System.out.println(k); 

这样是不行的。

可以在一行上声明多个变量:

int a, b, c = 100;

c变量赋值100,a,b变量只声明了没有赋值。

int a = 10, b = 20, c = 100;

可以这样每个都赋值。

声明和赋值可以分开,也可以一起做!!!

int i;

i = 100; // 先声明再赋值

int k = 200; // 声明的同时赋值

在“同一个域”当中,变量名不能重名!!!!!!

但可以重新赋值!!!

{

		int i = 100;

		//double i = 2.0; // 重名了编译器会报错,不允许。

		i = 300; // 可以重新赋值。

	}

到底什么叫做同一个域?????

这个目前不太好解释,大家记住吧:在一个大括号里,就是同一个域,这也是里面变量的生命周期,或者说存活时间

{A{B{C}

	}

}

A域包括B域,B域包括C域。

变量的分类

根据位置进行分类:记住就行

在方法体当中声明的变量叫做局部变量。

public static void m1(){

	//局部变量,方法执行结束之后内存释放。

	int k = 100;

	int i = 200;

}

 

在方法体外以及类体内声明的变量叫做成员变量。

public class T{

	public static void x(){

					

	}

	// 成员变量

	int i = 200;

}

 

变量的作用域

出了大括号就不认识了。别的先别管。

{

	int i = 100;

	{

		在这里可以访问i

	}

}

 

{

	在这里是无法访问i变量。

}

5.8 运算符

5.8.1 算术运算符

是用来进行运算的,有+,-,*,/,++,–,%

public class JavaSE_Nw {

  public static void main(String[] args) {

    int a = 5,b = 2;

    System.out.println(a+b);  // 7

    System.out.println(a-b);  // 3

    System.out.println(a*b);  // 10

    System.out.println(a/b);  // 2

  }

}

5.8.2 关系运算符

关系运算符有:== 、!=、>、<、<=、>= 这里的都是英文符号,需要注意的是,关系运算符都是二目运算符,返回的都是布尔类型的数据true/false+

public class JavaSE_Nw {

  public static void main(String[] args) {

    int a = 5,b = 2;

    System.out.println(a==b);  // false

    System.out.println(a!=b);  // true

    System.out.println(a>b);  // true

    System.out.println(a<b);  // false

    System.out.println(a<=b);  // false

    System.out.println(a>=b);  // true

  }

}

 

5.8.3 位运算符

位运算符主要针对的是二进制数据,并只适用于int ,short ,byte,long,char五种类型。

位运算符有,&、|、<<、>>、、~、>>>、

public class JavaSE_Nw {

  public static void main(String[] args) {

    int a = 5,b = 2;

    System.out.println(a<<b);  // 20

    System.out.println(a>>b);  // 1

    System.out.println(a|b);  // 7

    System.out.println(a&b);  // 0

    System.out.println(a^b);  // 7

    System.out.println(a>>>b);  // 1

    System.out.println(~b);  // -3

  }

}

 

5.8.4 逻辑运算符

三种运算符:与&&、或 ||、非 !

public class JavaSE_Nw {

  public static void main(String[] args) {

    int a = 5,b = 2;

    System.out.println(a<b&&a>b);  // false

    System.out.println(a==b||a>b);  // true

    System.out.println(!(a>b));  // false

  }

}

5.8.5 赋值运算符

=、+=、-=、*=、/=、(%)、<<=、>>=、&=、|=、^=

public class JavaSE_Nw {

  public static void main(String[] args) {

    int a = 5,b = 2;

    System.out.println(a+=2);  // 7

    System.out.println(a-=1);  // 6

    System.out.println(a*=2);  // 12

    System.out.println(a*=2);  // 24

  }

}

 

五、流程控制

6. 分支语句

6.1 if语句

· 格式:

if (条件){
  代码块;
}

代码实例:

public class JavaSE_Nw {

  public static void main(String[] args) {

    int age = 18;

    if (age>=18){

      System.out.println("可以去网吧上网");

    }

  }

}

· 格式:

if(条件表达式){
    代码块;
}else{
    代码块;
  }

代码实例:

public class JavaSE_Nw {

 public static void main(String[] args) {

   String weather = "不下雨";

   if (weather.equals("不下雨")){

     System.out.println("出去跑步");

   }else{

     System.out.println("在家读书");

   }



 }

}

· 格式:

if(表达式){
 代码块;
 }else if(表达式){
 }else{
 代码块;
 }
public class JavaSE_Uw{
   public static void main(String[] args){
       int score = 80;
       if 

以上是关于二万字爆肝JavaSE基础知识的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket通信原理和在Tomcat中实现源码详解(万字爆肝)

❤️爆肝十二万字《python从零到精通教程》,从零教你变大佬❤️(建议收藏)

二万字长文图文详解RabbitMQ6 种工作模式(理论与代码相结合)

干货分享|建议收藏2w字爆肝详解 JavaScript对象

Redis系列Redis常用数据类型命令大全,6K字爆肝整理,路过不容错过

Redis系列Redis常用数据类型命令大全,6K字爆肝整理,路过不容错过