corejava day1

corejava
记事本
Eclipse 3个字母 提示

java :编程语言
第一代:机器语言
0101–>计算机底层能识别
可以操作计算机
但是可读性不好

第二代:汇编语言
使用指令代替 0101机器码

第三代编程语言:
面向对象的编程语言
[以对象为最小单位进行编程]
java c c++ py c# js
编程语言:
主要完成什么功能?
【使用编程语言操作计算机
利用计算机快速运算的能力
解决实际问题】

重点:处理数据
java:
java编程语言:
1,数据结构;数据在内存中怎么存放
二叉树,栈和队列,链表,数组,hash表
2,算法:处理数据时的最优解决方案

3,内存:开辟内存空间
销毁内存空间
java平台;
java=javaSE + javaEE + javaME
carejava
类库
桌面程序
javaEE:
操作数据库:JPA javaEE规范
Hibernate springDataJpa
javaME
移动端产品
javaSE 桌面应用
javaEE 企业级应用开发
一套规范 用来解决企业级开发遇到的问题
javaME 手机开发
使用:
1,安装JDK:
类库,jvm虚拟机,解析程序
jdk=jre+kit
2,jre:java runtime 环境
3,sdk
普通编译:c c++
把源代码 转换 为机器能识别的机器码

javac编译:
把源代码 转换 为字节码
java运行:
字节码 -->jvm–>机器码–>底层运行
mac
linux
window

顶级元素 class : 当前是一个类
一个源文件.java 只能有一个public修饰的类
并且类名和文件名需要一致
一个源文件.java可以由多个class
但是只能有一个class被public修饰

下载:java
oracle官网
jdk12
jdk1.8_172

普通编译:把源代码 转换为机器能识别的机器码
java编译:把源代码 转换为字节码
java运行:字节码–>jvm–>机器码–>底层

: java的优点
1,简单性 : 面向对象变成,写代码变得非常简单。
2,跨平台 : 一次编译,到处运行。(jvm)
3,多线程 : 其他语言的多线程一般是系统级别的,java的多线程是语言级别的
线程 : 一个进程下 其他多个任务同时完成
进程 : 一个应用 运行 会在内存中开辟一块独立的内存空间
4,动态编译: 在一个项目中,如果需要修改一个java文件的话,那么就修改这一个文件就行了,其他的java文件不需要动

5,内存管理方案,gc:垃圾回收机制 : 指的是堆中的内存。
如果被引用数为0 就是 垃圾

java中有一个专门负责JVM中垃圾释放的线程。
垃圾的定义:在堆中的对象,没有任何引用指向这个对象,那么这个对象就是垃圾。
: 没有引用的内存节点

注意:垃圾回收有自己的算法,我们是不能控制垃圾回收机制的,虽然有和垃圾回收相关的方法:java.lang.System.gc() java.lang.Runtime.gc(),但是还是无法控制垃圾回收机制
知识点速记:java 一次编译,到处运行。
java的helloworld例子
编写java程序.HelloWorld.java

知识点速记:java代码必须写在方法中,方法必须写在类中,有主方法的类是可以运行的。

类{
	   方法{
		int a = 10;
		syso(a);
	   }
	}

java代码的类加载机制
把Hello.class字节码文件中
Hello类加载到内存的过程

java Hello就会触发java类加载
类加载:双亲委托机制
启动类加载 老子(孔子爹)
/jre/lib/rt.jar
扩展类加载 孔子
/jre/lib/ext/*.jar
本地类加载 孔融
classpath:.
什么时候触发类加载?
java Hello

为了避免类的重复加载

网络类加载
思考:为啥要存在这么多类加载?

双亲委托机制加载类的流程:
1,执行java HelloWord 命令时候开始类加载(得到加载类的指令)
2,本地类加载器接到 加载HelloWorld类的指令,但是不做处理,反馈给上级 扩展类加载器
3,扩展类加载器得到 加载HelloWorld类的指令,但是也不做处理,反馈给上级 启动类加载
4,启动类加载器得到 加载HelloWorld类的指令,直接处理,进行类加载。加载rt.jar中的类,但是没有加载到HelloWorl的类,接着启动类加载器又把加载 HelloWorld类的指令 向下交给扩展类加载器进行完成
5,扩展类加载器 得到上级分配的任务:加载HelloWorld类,立刻加载jre/lib/ext/*.jar,但是也没有加载到HelloWorl的类,接着 扩展类加载器又把加载HelloWorld类的指令 向下交给本地类加载器进行完成。
6,本地类加载器 得到上级分配的任务:加载HelloWorld类,立刻执行加载ClassPath下的类,如果加载到了HelloWorld类 调用main方法执行,如果没有加载到HelloWorld类就报异常,ClassNotFindException 类找不到。
扩展:可以自己动手把一个class文件打成jar包,放到jre/lib/ext/下,然后 运行jar包中的类,看是否可以运行成功。

第九部分:简单了解java虚拟机

进行类加载,字节码验证,栈不能溢出,方法的参数类型需要正确,类型转换需要正确。
把字节码转换为机器码进行运行。
第十部分: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 : 类
java中标识一个类的关键字
(java类中可以没有package,也可以没有import,但是一定会class)

带包名的类编写,编译运行.HelloPackage.java
不要出现中文: 可能会发生中文乱码问题。

不指定编码的编译 :javac -d bin src/HelloPackage.java
指定编码为utf-8 : 编译 : javac -encoding utf-8 -d bin src/HelloPackage.java
运行 : java -cp bin com.briup.ch01.HelloPackage

public class Hello{

    public static void main(String[] args){

  	System.out.println("hello world");	

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值