javaSE部分(01)

javaSE

Day01

本来觉得se比较简单,如果忘记看一下笔记也可以捡起来,但是时间长了,奈何记性太差,学习之后老是忘记自己曾经都学会过什么,所以即便是基础也决定要虚心对待,记录如果出现错误,随时修改。

在csdn记录一下自己学习的过程。

JavaSE知识模块介绍

第一部分:计算机编程语言核心结构:

数据类型,运算符,流程控制,数组...(语法的设计方式)

第二部分:java面向对象核心逻辑:

类和对象,封装,继承,多态,抽象,接口...(调用)

第三部分:javaSE核心高级应用:集合,I/O,多线程,网络编程,反射机制...(偏底层,后期封装)

第四部分:java新特性:Lambda表达式,函数式编程,新DATE/Time API,接口的默认,静态和私有方法...(1.8的新特性)

第五部分:MYSQL/JDBC的核心技术:sql语句,数据库连接池,DBUTILS,事务管理,批处理...

总结:

一部分基础

二部分面试+调用思想

三部分底层,后期源码,要熟练使用框架

四部分开发常用

五部分mysql的sql语句必须会,其余部分属于web部分,maven之后基本不用

1.计算机语言介绍(了解,非面试题)

计算机编程语言是什么?

所谓计算机编程语言,就是人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。

2.字节

计算机存储数据的最小基本单元

8个二进制位等于1个字节

二进制位:bit(0或者1组成)

字节:byte或B

单元转换关系

8bit = 1B

1024B = 1KB

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

3.常见dos命令(模拟当年的黑窗口,以后一些windows版本的中间件可能使用dos命令才能打开生效,也许面试会问)

打开黑窗口: win+R -> 运行 -> cmd -> enter

常用dos命令:

切换盘符: 盘符名:

查看当前目录下的文件或文件夹: dir

进入指定文件夹名: cd 文件夹名

进入多级文件夹名: cd 文件夹名\文件夹名

退到上一级目录: cd ..

退到根目录: cd \

清屏: cls

创建文件夹: mkdir

创建多级文件夹: mkdir 文件夹名\文件夹名\文件夹名

删除文件夹: rd 文件夹名(直接永久删除,并且不能删除非空路径)

删除文件: del 文件名

批量删除文件: del *.后缀名

退出dos命令窗口: exit

按上下箭头: 查看输入过的命令

Tab键: 补全文件或文件夹名称

选中路径 -> cmd -> 快速进入到指定目录下

Java所需要的环境

1.JVM(定义部分)

虚拟机(Java virture machine)是运行所有java程序的假象计算机,是java程序的运行环境之一,编写的所有java程序,都运行在jvm之中。

2.跨平台(了解)

跨:跨越

平台:操作系统

跨平台:写好的程序能在不同的操作系统上运行

3.虚拟机和跨平台(了解)

跨平台的实现需要虚拟机的支持

Java代码想要在不同的操作系统上运行实现跨平台,就需要安装不同版本的jvm,形象的说,Jvm就像扮演了一个翻译的角色。

4.Jdk和jre

jre (Java Runtime Environment):是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。

jdk(Java Development's Kit):java的开发工具包,jdk包含了jre以及开发人员使用的工具

所以,如果想要运行一个已有的java程序,安装jre即可

如果作为开发,需要安装jdk    

jdk包含了jre

jre包含了jvm

5.JVM(面试部分)

java代码一般是在电脑上编写,电脑要安装相应的运行环境,此时jvm就安装在电脑的相应位置。

平时使用的idea等与java相关的软件进行代码的书写,写好的代码就会进入java虚拟机中,java虚拟机再输出机器码给操作系统,操作系统再调用电脑相关硬件完成相应功能。

结论也是越接近调用硬件的语言,运行速度越快。

关于java8之后的jvm内存结构

其中绿色的部分代表jvm能实现的功能

最上面的绿色部分代表功能1:

加载.class文件,不是加载.java文件,到这里就是java虚拟机的能力。

面试题:类加载器有几种?

有4种,分别是

引导类加载器(bootstrap classloader)

扩展类加载器(extension classloader)

应用程序加载器(app classloader)

自定义加载器(可以自定义,但目前没有那个实力)

中间的绿色部分代表功能2:

垃圾回收,垃圾回收机制,涉及比较多。

最下面的绿色部分代表功能3:

作用是生成的.class字节码文件经过执行引擎之后变成电脑能识别的机器码文件,

.class字节码文件可以通过editplus这个文本编辑软件,安装插件HEX-Editor之后,可以看到

类似于哈希值(只是类似)。

橙色部分与蓝色部分与线程有关

线程:是进程调度资源的最小单位。

可以说进入网站点击页面的任意选项进行的操作都可谓是一个线程。

开发时这些线程对应的功能有的是共享的线程,有的是不共享的线程

图中橙色的部分是线程共享的部分,蓝色的部分是线程私有的部分。

蓝色部分

Pc寄存器相当于cpu的秘书,为cpu提供好下一个任务的执行。

Java栈与本地方法栈需要详细介绍。

橙色部分

橙色部分为线程共有区,

分为方法区,java堆和直接内存。

方法区

方法区中含有常量池,

演示代码1:

public interface Constant {
    //常量
    public final String VOCALIST = "Eason Chen";
    //很多常量放在一起的时候,就会变成常量池,例如:
    public final String BRAND = "ROLEX";
    public final String LANGUAGE = "JAVA";
    //这三者在一起的时候,就是常量池,而且修饰符为public为公有的。
}

演示代码2:

public class Demo1 {
    private String GAME;

    public void add(){
        System.out.println("......");
    }

    //由图中橙色部分可知以上的类,字符串,方法都会放在方法区

    public static void main(String[] args) {
        Demo1 demo1 = new Demo1();  //下面创建对象的过程(new Demo1())放在
                                    //demo1对象是放在栈中
                                    //Demo1是指向类模板,放在方法区中
        //关于GC,
        // Demo1轻易不清除,demo1随main方法销毁,new Demo1()是GC回收的部分。
    }

    //简单面试题,类与对象的区别?
    //类是对象的模板,对象是类的实例。
    //模板对应只有一个,实例可以有无数个。

}

关于直接内存,

橙色部分和蓝色部分占用着电脑的部分内存条,绿色部分指的是jvm的功能。

Jvm的内存在不做特殊操作的情况下,占据着电脑大约1/4的内存。

直接内存的意思是在电脑内存中jvm内存的外面开辟一个内存空间,这个内存空间与jvm虚拟机是平级的关系,并且如果电脑的内存是16G,那么虚拟机内存与直接内存加在一起的大小一般不会超过12G。

这个直接内存的大小不受jvm虚拟机控制,受电脑内存大小的影响,这个直接内存是供NIO使用的。

(IO流,从磁盘上读写文件的过程)

NIO也叫新IO,非阻塞IO。

IO叫老IO,阻塞IO。

只有非阻塞IO才可以开启直接内存。

读写文件是浪费电脑性能的(就是慢),所以单独开辟一个空间直接内存,用来读写文件。

面试题:JVM是如何调优的?

  1. 内存管理(这里的内存管理管不到直接内存,只能管理jvm自身的元素的内存)
  2. 垃圾回收

整体总结:

面试题:JVM是由什么组成的?

1.功能区域

类加载器,垃圾回收,执行引擎

2.共享区

方法区,堆,直接内存

3.私有区

栈,本地方法栈,PC寄存器

系统重装,找个idea安装包待续...

6.JDK安装

下载:www.oracle.com

卸载:

卸载方式,选择设置,应用卸载,找到javaSE,大概280M左右。

卸载之后,之前配有环境变量,还要删除环境变量。

选择属性->高级系统设置->环境变量,将之前设置的JAVA_HOME选项删除,

注意不要破坏其他的环境变量,否则有可能需要重新做系统。

还有个人用户的path设置。

安装:

下好的安装包为jdk-8u162-windows-x64(也可以用其他的)

然后双击安装,下一步,选择更改选项,放在合适的盘中,路径不要带有中文。

然后选择jre选择此功能不可用,因为jdk中已经包含了运行环境。

安装完毕,关闭即可。

环境变量的配置(win10):

此电脑->属性->高级系统设置->环境变量->系统变量处

新建->上面填写JAVA_HOME,下面填写jdk安装路径bin路径的上一级,如个人

上面:JAVA_HOME 下面:D:\Develop\JDK8

然后再在系统变量path中配置,选择新建,然后填写路径%JAVA_HOME%\bin,然后上移到最上面,全部确定之后,就可以在任意位置cmd使用java相关指令。

简单程序编写:

编写的java程序都是以.java为结尾的,日后如果有需要修改或者查看编写程序的时候,

可以使用一个软件editPlus进行查看,也比较方便。

另外如果使用cmd进行编译,使用public修饰的类,要和文件名保持一致。

Javac 类名.java 编译

Java 类名 运行

之后就会在窗口显示出相应的结果。

注释

写注释的主要作用是对个人写的代码进行一个说明。

//

单行注释

/**/

多行注释

/** */

文档注释,cmd运行命令javadoc -d  doc的文件名 -author -version 类名.java

按下回车后,就会生成doc的文件名相应的文件夹,在其中找到index.html,

就会有之前写好文档注释的相应的说明文档,以html的形式展示出来。

另外如果在程序中还写有相应的/** */注释,都会在html页面中展示出来。

关键字

Java提前定义好的具有特殊意义的小写单词

命令行

cmd命令行窗口默认是gbk编码形式,如果用命令行来进行编译,要将代码改成gbk的形式

类与pubic

一个源文件可以有多个类,但是为public的类只能有一个。

常量

在程序运行的过程中值不会发生改变的数据

分类

整数常量:所有整数

小数常量:所有带小数点的

字符常量:带单引号的 ‘ ’ 单引号必须有且只能有一个内容

字符串常量:带双引号的 ” ”,双引号中随意写

布尔常量:true false

空常量:null 代表什么也不是,什么也没有,数据不存在,不能直接使用

System.out.println(‘’); 这样的代码会出现错误,单引号里面必须有一个内容。

System.out.println(‘11’);这样的代码会出现错误,单引号里面必须有一个内容。

单引号中是一个空格或者一个tab键也可以,属于有一个内容。

System.out.println(null); 编译时报错,不能直接使用。

常量之间可以做运算

另外/如果被除数和除数都是整数,结果取整

如果被除数和除数中有小数,结果就是小数

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值