core java --1--java优点以及文件夹作用

一.core java

java编程语言
第一代编程语言
机器语言:直接使用机器能识别的0101进行编程
优点:效率高
缺点:可读性可维护性差

​ 第二代编程语言
​ 汇编语言:使用少量指令代替0101代码进行编程

​ 第三代编程语言
​ 面向对象编程语言:以对象为最小编程单位编程

二、java:

  • Java有哪些优点
  1. Java为纯面向对象的语言。
  2. 平台无关性:Java为解释型语言,“一次编译,到处运行”。跨平台性。
  3. Java提供了很多的内置的类库。
  4. 提供了对Web应用开发的支持。
  5. 具有较好的健壮性和安全性。
  6. 祛除了C++语言中难以理解。容易混淆的地方。

​ 1、java语言:
​ 1、数据结构: 数据在内存中怎样存放的(数据之间的关联关系)
​ 二叉树 链表 数组 栈和队列 哈希表(散列)
​ 2、算法: 解决问题
​ 3、内存管理: 数据在内存中开启
​ 数据在内存中释放

​ 2、java平台:主要包含两个模块
​ Windows mac
​ 1、规范: API 应用程序接口 application program interface

​ 2、JVM

​ 3、java包含:
​ java = javaSE + javaEE + javaMe

​ 1、javaSE:桌面应用级开发
​ 核心:corejava 类库

​ 缺点:画面感差

​ 2、javaEE:企业级应用开发
​ 网站:淘宝,京东 后台服务器
​ javaEE其实是一套规范
​ 用来将解决企业级开发过程中可能遇到的问题
​ jpa:规范操作数据库
​ hibernate实现规范 --> 框架
​ springDataJPA 操作数据库数据的规范

​ 3、javaMe:移动端开发
​ 车载导航

​ 4、jdk:java开发工具箱
​ jdk = jre + kit (kit用来开发的小工具)
​ 开发过程中用到的小工具

​ bin文件夹:
​ javac 以.java结尾源文件编译
​ 编译后得到.class字节码文件
​ 检查语法

​ 运行:java
​ jvm --> 运行.class文件中的类 --> 机器码 --> 机器运行

​ 不同的机器的虚拟机不一样(jvm很多个版本)

​ 先编译在运行

​ javadoc: 生成API文档
​ jar:把.class字节码文件 打包 成.jar

​ include文件夹:C语言头文件
​ java中内部部分是C实现的

​ db:java提供的数据库
​ lib:java所用的基本jar包
​ src:jdk的加载类文件

5、jre:java运行环境
运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

6、java优点:
1、简单性:面向对象
2、跨平台:一次编译,到处运行。(不同机器 识别的机器码不一样,有不同平台版本对应的虚拟机)
3、多线程:其他语言的多线程一般是系统线程
线程:一个进程有多个线程 多个任务可以同时运行
进程:每个软件的运行都是一个进程
4、动态编译:在一个项目中,如果有一个文件修改,只需要编译修改的文件
5、内存管理方案:gc(专门负责JVM垃圾释放的线程):垃圾回收机制
垃圾:指的是堆中的内存,地址没有被任何位置引用(没有引用的内存节点)
什么时候回收垃圾:地址没有被引用时候,被标记为垃圾 一段时间后被回收(gc机制控制时间)

gc有自己的算法,所以我们无法控制垃圾回收机制
虽然有java.lang.System.gc() java.lang.Runtime.gc(),但还是无法控制垃圾回收

7、java代码必须写在方法里,方法必须在类中,这样的才可以运行
在运行.java文件时候
javac编译出.class字节码文件
jvm运行的是 .class字节码文件中的 类(class类加载)
转换为机器码
机器去执行

8、java 类加载机制 存在这么多类加载的原因:避免类的重复加载

​ 将Hello.class字节码文件中 类 加载到内存的过程
​ #java Hello
​ 触发类加载机制

​ 类加载机制:双亲委托机制

​ 启动类加载器 /jre/lib/rt.jar 到rt.jar搜索存在字节码文件的类

​ |

​ 扩展类加载器 /jre/lib/ext/ * .jar
​ 到*.jar搜索存在字节码文件的类

​ |

​ 应用类加载器 classpath= .
​ 本地路径存在的字节码文件的类
​ #Hello.class

​ #对应实际类举例
​ 孔融让梨
​ 孔融拿到梨后
​ 老子 1,吃 2,爱幼
​ | |
​ 孔子 1,吃 2,爱幼
​ | |
​ 孔融 1,吃

双亲委托机制流程:
1、执行java 类名 命令时候触发类加载机制
2、本地类加载 接受到加载类命令 不做处理 反馈给上级 到扩张加载类
3、扩展类加载 接收到下级本地类加载反馈 不做处理 反馈给上级 到启动类加载

​ 4、启动类加载 得到下级扩展类加载命令 直接处理 进行 类加载。加载rt.jar中的类,但是没有找到对应匹配的类,接着启动加载类向下级 扩展类进行加载
​ 5、同样的 扩展类 中的*.jar中的类,没有对应匹配的类,接着扩展类交给下级本地类加载
​ 6、在本地类中找到对应字节码文件的类 显示结果
​ 未找到对应类 显示ClassNotFindException 类找不到

9、java 顶级元素(顶级关键字)
package + import + class

  • package

    1. 最终会是以文件夹的形式体现出来(有什么包,就必须有什么文件夹,运行的时候.class文件必须在这个文件夹下面)
    2. java文件中有多个package的时候,用.分割并且结尾用;号结束 例如:(com.briup.test;)
    3. 包也是java中类的标识的一部分,确定某一个类是通过包名加类名来唯一确定的 比如运行java类的时候:
      java package.类名 (java com.briup.test.HelloPackage)
  • import

    1. 导包用的关键字
    2. 如果你想在当前这个类使用其他的类,那么就必须通过这个关键字,把那个类导入进来
    3. java.lang包下面的类可以直接使用,不用导入.
    4. 和当前这个类位于同一个包下面的类,也不需要导入,可以直接使用
  • class : 类(一个类对应一个字节码文件)

    1. java中标识一个类的关键字
    2. 一个源文件可以有多个类,但是只能有一个类被public修饰,并且类名需要和文件名一致
    3. java类中可以没有package,也可以没有import,但是一定会class
    4. 带包名的类编写,编译运行.HelloPackage.java
      • 不要出现中文: 可能会发生中文乱码问题。
    5. 不指定编码的编译 :javac -d bin src/HelloPackage.java
      • -d :指定编译的字节码文件的存放位置
      • 指定编码为utf-8 : 编译 : javac -encoding utf-8 -d bin src/HelloPackage.java
      • 指定已经编译好的字节码文件存放位置 : java -cp bin com.briup.ch01.HelloPackage

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值