Java基础知识总结

java现

最近几年,go,python,C++,Javascript等语言迅速崛起,大有挑战java地位趋势,但是Java毋庸置疑仍然是当前互联网行业里招聘量最大的。

很多大厂,美团,腾讯,阿里,字节,百度,快手,拼多多,等,都是java为主,部分大厂以其他语言为主,但多多少少也会用到一些Java岗位。

所以,Java的现状及未来,我觉得都是比较不错的,岗位多也就代表着机会多,并且Java对新人小白来说都很友好。

自学前应该知道

自学前请做好心理准备,自学是一个即寂寞又漫长的过程,如果想踏进来,请做好放弃几乎所有的娱乐准备,就拿我为列,除了偶尔看一下b站就没什么娱乐活动了。如抱着三天打鱼两天晒网的态度,我觉得还是放弃吧,而且不要急于求成,慢慢来,厚积薄发,要明白人生是需要沉淀的。相信自己,让我们一起加油吧!

自学教程获取

都说授人以鱼不如授之以鱼,一个又简单靠谱的教程获取方式;b站搜索关键字加教程:列入MySQL教程,JavaWeb教程,等,一般跟着播放量高的走就好了。还有就是408科目那些计算机网络,计算机组成原理,计算机操作系统。这些科目的学习就跟着一些知名的985院校走就好了。别的就看你自己的选择了。编程语言就在b站等平台看看教程就好了。

学习建议

1.自学是一个很漫长的过程:循序渐进,保持耐心,切勿不要急于求成可以一起找个伙伴一起互相学习,保持交流,相互鼓励,这样可以让自己更有动力的坚持下去。

2.将自己所学习的东西,都通过写博客,csdn,或着就用word文件记录下来,我刚开始学的时候就用word文件记录的。哈哈!当你发现你自己记录的越来越多的时候,可能你自己的心里就有一种小小的成就感,提高你学习的动力哈。

3.在自学的的时候,不要急于求成,要懂得劳逸结合,不要把自己搞得太累,不然会使学习效率下降。

4.利用好搜索引擎,当遇到什么不懂的问题给就上知乎,百度,博客,csdn,很多问题知乎,百度就能解决。

5.在观看视频教程的时候,不懂的可以自己进行二刷,三刷。一个知识点反复观看,加深印象,一个小小的建议,拿我为列,在看完一套教程时候,在进行二刷,会的知识点,开二倍速度,进行巩固,不会的在进行反复学习。

6.在学习的过程中,想看视频,不要先上来就看书,等有一定基础的时候再去看一些书籍比如《Java核心技术 卷1》《Java编程思想》等一些经典书籍。

自学知识点JavaSe基础

1.基础知识

软件;即一系列按照特定顺序组织的计算机数据和指令的集合。分为系统软件和应用软件

应用程序=-算法+数据结构

人机交互方式;

图形化界面VS命令行方式

2.计算机语言发展迭代史

第一代;机器语言

第二代;汇编语言

第三代;高级语言   (面向过程) —(面向对象)

3.Java语言迭代概述

1991年 green项目,开发语言最初命名为oak(橡树)

1994年开发组意识到oak非常适合于互联网

1996年发布JDk1.0

2004年,发布里程碑式版本jdk1.5为突出这个版本的重要性,更名为5.0

2009年,甲骨文公司以74亿美金收购sun公司

4.Java语言应该用领域

-java web开发; 后台开发

-大数据开发;

-android应用程序开发;客户端开发

5.Java基础体系平台

(1)Java SE标准版

支持面向桌面级应用的Java平台,提供了Java核心的API,此版本以前称之为Java2SE

(2)Java EE企业版

是为为开发企业环境下的应用程序提供了一套完美的解决方案。主要针对于Java web应用程序开发。版本之前称之为J2EE

(3)Java ME小行型板

支持Java应用程序在移动端(手机,pda)上的平台,对JavaAPI有所精简,并加入了移动端的支持,此版本称之为J2ME

6.Java语言特点概述

1,面向对象性;所有元素都要通过类和对象来访问,万物皆可对象

两个要素;类,对象

三个特征;封装,继承,多态

2,健壮性;

  1. 去除了c语言的指针。
  2. 自动的垃圾回收机制---仍会出现内存溢出,内存泄露。

3,跨平台性;一次编译到处运行。

功劳归功于JVM  Java虚拟机。

4,安全性:删除了指针操作,有效地避免了用户对内存的非法操作。减少了出现损害系统平台的行为,Java可以防病毒和修改系统。

5,可以移植性:Java的类库提供了针对不同平台的接口,所以这些类库可以移植。
6,多线程性:Java应用程序可以同时执行多项任务,而且相应的同步机制保证了不同线程能够共享数据。

7,简单性:Java语言是纯面向对象语言,语法简单,但继承,去除了多继承。没有指针,还会自动内存垃圾。等!

7.开发环境的搭建

1.JDK,JRE,JVM的关系

包含关系

JDK=JRE+开发工具集(列入java编译工具等)

JRE=JVM+JAVA SE标准类库

2.path环境变量的配置

为什么配置path环境变量?

Path环境变量;windows系统执行操作命令时所要搜寻的路径

希望java的开放的工具在任何文件路径下都可以执行成功。

3,开发体验————Hello World

·java文件——>calss文件————>结果

源 文 件         字 节 码 文 件

4.常用的Java开发工具

Java集成开发环境(IDE)           文本编辑工具

Eclipse     LIDEA                  EditPlus  记事本   notepad  

8.数据类型转换

(1)自动类型转换

基本原则

低级可以转高级。当范围大的类型与范围小的类型进行计算时,结果会自动转换为范围大的类型

(2)强制类型转换

高级别转低级别必须进行强制类型转换

格式;(tybe)value type是强制类型转换后的数据类型。

9.变量的使用和数据类型
9.1.1 变量的分类


按数据类型分类

详细说明:

整型:

byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节)
① byte范围:-128 ~ 127
② 声明long型变量,必须以"l"或"L"结尾
③ 通常,定义整型变量时,使用int型。
④整型的常量,默认类型是:int型

浮点型 :

float(4字节) \ double(8字节)
① 浮点型,表示带小数点的数值
② float表示数值的范围比long还大
③ 定义float类型变量时,变量要以"f"或"F"结尾
④ 通常,定义浮点型变量时,使用double型。
⑤浮点型的常量,默认类型为:double

字符型

char (1字符=2字节)
① 定义char型变量,通常使用一对’’,内部只能写一个字符
② 表示方式:1.声明一个字符 2.转义字符 3.直接使用 Unicode 值来表示字符型常量

布尔型

boolean
① 只能取两个值之一:true 、 false
② 常常在条件判断、循环结构中使用

按声明的位置分类(了解)


9.1.2定义变量的格式
数据类型 变量名 = 变量值;

 int one = 100;
1
数据类型 变量名;
变量名 = 变量值;

  int one;
  one = 100;
1
2
9.1.3 变量使用的注意点:
① 变量必须先声明,后使用
② 变量都定义在其作用域内。在作用域内,它是有效的。换句话说,出了作用域,就失效了
③ 同一个作用域内,不可以声明两个同名的变量

9.1.4 基本数据类型变量间运算规则
        涉及到的基本数据类型:除了boolean之外的其他7种
        自动类型转换(只涉及7种基本数据类型)
        结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte 、char 、short --> int --> long --> float --> double
        特别的:当byte、char、short三种类型的变量做运算时,结果为int型
        说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量

        强制类型转换(只涉及7种基本数据类型):自动类型提升运算的逆运算。
                1.需要使用强转符:()
                2.注意点:强制类型转换,可能导致精度损失。

9.1.5 String与8种基本数据类型间的运算
String属于引用数据类型,翻译为:字符串
声明String类型变量时,使用一对""
String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
运算的结果仍然是String类型
避免:
String s = 123;//编译错误
String s1 = "123";
int i = (int)s1;//编译错误
1
2

       

9.2.1进制(只做了解)
       编程中涉及的进制及表示方式:

       二进制的使用说明:

计算机底层的存储方式:所有数字在计算机底层都以二进制形式存在。
二进制数据的存储方式:所有的数值,不管正负,底层都以补码的方式存储。
原码、反码、补码的说明:
正数:三码合一
负数:


10运算符
1.算术运算符:
        + - * / % ++ –

       %运算只能在整数型时使用,浮点数不适用。

       ++前 是变量先自加再运算,后++ 是变量先运算在自加。

2.赋值运算符:
       = += -= *= /= %=

       =运算符右侧会出现四种情况

int i = 100;// 常量值赋值,什么类型的常量值赋值给什么类型的变量。
int i = 100 + 50;// 表达式运算结果赋值。
int j = i;// 变量给变量赋值,值传递。
double d = Math.random();// 方法的返回值赋值。
one += 10 等同于 one = one + 10;

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

       关系运算符连接的关系表达式,关系表达式的结果是boolean。

4.逻辑运算符:
       逻辑运算符的作用是连接多个关系表达式。& | ^ ! && ||

       &符号:左右两端的关系表达式同时返回true的时候整个表达式返回true,有一端返回false则整个表达式是false。

       |符号:左右两端有一端是返回true则整个表达式返回true,只有两端同时返回false整个表达式才返回false。

       ^符号:异或就是找不同,左右两端的表达式返回的结果不一样,则返回true。左右两端返回的结果一样则返回false。

       !:反转一个boolean表达式的结果。true变false,false变true。

       &&:短路与,短路与左侧关系表达式为false则右侧关系表达式将不再运算。

       ||:短路或,短路或左侧表达式返回为true则右侧表达式不再运算。

5.三目运算符:
       ?:。问号左侧是一个boolean表达式。当boolean表达式的结果是true 则执行:号左侧的表达式,返回false则执行:右侧的表达式。

6.位运算符(了解):
       & | ^ ~ << >> >>> 对于数学运算,位运算的效率更高。位运算只能操作整数。

       << 左移 : 任何一个数左移N位,相当于这个数乘以2的N次方。 >>右移:任何一个数右移N为,相当于这个数除以2的N次方法。

11.流程控制语句

(1)顺序结构

顺序:从上到下,从左到右(就是代码应该从左到右,从上到下去执行)

(2)分支结构

单分支:

if(条件表达式){//条件表达式返回true,则执行if块,if块执行结束程序会向下继续,如果返回false
}则跳过if块执行后面的代码。

双分支:

if(内容){
}else{
}

多分支:

if(){
}elseif(){
}elseif(){
}

多分支结构:switch——case

switch(表达式){
case 常量1:
执行语句1;
break
case 常量2:
执行语句2;
break
case 常量3:
执行语句3;
default:

break
}

(3)循环结构

while。   do-while,for

while(循环条件){
//循环操作
}
//while循环,先判断后执行,如果循环条件的初始值不满足则一次循环都不执行。
do{
//循环操作
}while(循环条件);
//do-while循环,先执行后判断,循环体首先执行一次,判断循环条件,循环条件true则继续循环,false则退出。
for(循环变量的定义;循环条件;循环变量的改变){//用于执行循环次数的确定,先判断,后执行三个表达式可以根据需求进行省略,但是两个分号不能省。
}

二重循环:循环的嵌套

//一个循环完整的包含另一个循环体里面,可以是任何一个循环结构去包含另一个循环系结构
for(){//外层循环
for(){//内层循环
//外层循环执行一次,内层循环要完整的执行完所有操作,所以内层循环体的循环执行的次数是外层循环次数*内层循环次数
}
}

12.数组

数组的概念:数组是一个装载多个数据的容器。

数组的四个要素:数组的类型,数组名,数组元素,访问下标。

数组声明的三种方式:

int[]one=new  int [5]//数组声明的时候给出长度,且这个长度不在改变第一种方式,给出数组的长度,但是没有给数组元素的赋值。数组元素上的是默认值。
int [] two={30,50};数组声明同时给每一个元素赋值。数组的长度根据大括号中的值得数量决定。这种方式必须在一行之内完成。
int []three
three = new int []{30,40,50};//数组在声明的同时给每一个元素赋值。数组的长度根据大括号中值得数量决定,这种方式允许在两行内完成。

数组的遍历;

//普通for循环遍历数组
for(int i=0;i<nums.length;i++){
System .out.println(nums[i]);//访问数组元素的方式数组名[下标],下标的合法访问区间,是0-1,访问数组元素时,如果在下标合法区间,则访问可以正常进行,如果访问下标过了合法区间则会抛出数组异常值。
}

二维数组:一维的元素是另一个数组

int[] []nums=new int [5] [3];//同时给出一维数组和二维数组长度

int[] []nums=new int [5][];//给出一维长度,不给出二维的长度,此时一维数组为null
nums[0]=new int[3];//创建新数组给一维元素赋值。

int[][]nums={{35,87,90},{35,77,20,17},{90,87,65,100,40}};//静态声明二维数组,必须在声明数组的同时完成赋值

int[] [] nums ;
nums=new int [][] {{1,2,3},{1,2,3},{1,2,3}};//静态初始化二维数组,允许在数组声明之后赋值。

二维数组的遍历

for(int i=0;i<nums.length;i++){//遍历一维数组
for(int j=0;j<nums[i].length;j++){
System.out.println(nums[i][j]);
}
}

就先写到这里吧。👋拜拜!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值