Java简介,包含JDK,JRE组成,以及JAVA的优点

  • Post author:
  • Post category:java

                                          **学习JAVA ,Day01**

1.corejava(核心JAVA)
语言=os+数据结构+算法+思想

   1.os:操作系统
   2.数据结构:保存数据
     队,栈,树,链表...
   3.算法:做游戏常用
   举个面试题的例子:
     int a>0,b>0,用一句输出最大值
     解法:(|a+b|+|a-b|)/2

思想:语言的灵魂
java:面向对象的编程语言
c:面向过程的编程语言
c++:半面向对象,半面向过程的编程语言
面向过程:比如西红柿炒鸡蛋
步骤:

 1.买西红柿
 2.买鸡蛋
 3.洗西红柿
 4.炒鸡蛋
 5.炒西红柿
 6.装盘

面向对象

  1.有西红柿和鸡蛋
  2.炒(西红柿,鸡蛋){
    炒
  }
  3.装盘
 class 西红柿{
 }
  1. jdk包含哪些内容

    1.JVM虚拟机:解释执行java程序
    2.java的类库

     java.lang*
     java.io*
     java.net
    

3.java的可执行工具
javac:将java源文件编译成class字节码文件
java:运行class字节码文件

4.java语言分为三类
①JavaSE 做桌面程序
②javaME做移动应用,android,ios,前端
③javaEE 做企业级应用,例如淘宝

5.Java的特点
1.提供一个解释性环境

1.加快开发
2.一次编译,到处运行
 java→编译,class→运行class
3.支持多线程,语言层面的多线程
4.支持动态更新

2.提供了一种比较简单的语言

1.健壮性,更完善
2.取消了指针,取消程序级别的指针;底层依然存在指针,但程序员不用关心
3.没有内存管理
 程序员需要手动new创建对象,占用内存
 不需要关心内存的释放
4.java:GC垃圾回收器
 c:malloc() 开辟空间,free()函数来释放空间
 c++:new开辟空间,delete释放空间
5.纯面向对象编程语言(夸张了,其实并不是完全的面向对象)
 保留了基本数据类型

3.JVM
解释执行实现跨平台的特性,不同系统都有对应的JDK
bytecode:字节码文件,.class文件,与机器无关
4.GC:垃圾回收器
垃圾:无用的对象内存,没有任何指向的内存
级别非常低的系统级别的线程实现垃圾回收
所以程序员无法控制GC什么时候回收垃圾
当优先级高的线程让出CPU,低线程才会执行,一般情况下都是低线程让出CPU让高线程执行
GC什么时候执行

   1.内存不够用
   2.系统闲置的时候
 java.lang.System.gc()/java.lang.Runtime.gc()
 通知垃圾回收器回收垃圾,但不一定执行
 gc:回收垃圾算法
   1.标记清扫法(效率高)
     不会整理内存,会产生碎片
   2.内存搬移法from---to(效率低)
     可以整理内存,不会产生碎片
 效率低,数据搬移太耗费时间
   二者结合使用,通过判断进行选择

5.java平台代码安全策略
1.Class loader
加载:查找和加载类的二进制文件(class文件),将其置于内存中
2.Byte code verifier
字节码验证者
1.验证:确保类加载的正确性(有正确的内部结构,并且与其他类是否协调一致)
why? java虚拟机不知道某个特定的.class文件,到底是由正常的java编译器编译成的还是黑客特制的
类的验证可以提高程序的健壮性,确保程序安全执行
2.准备:为类的静态变量分配内存,并将其初始化默认值
3.解析:把类中的引用符号转化为直接引用
3.JIT Code generator
即时编译器,是把一个java字节码文件转换成可以直接发送给处理器的指令程序
4.Interpreter
解释器,当程序验证有问题时,就会将有问题的代码重新解释运行。
验证规范内容:
1.代码要和JVM规范一致,语法和版本是否兼容
2.代码不能破坏系统完整性
3.没有堆栈的上溢和下溢
4.判断参数类型是否正确
5.类型转换是否正确

6.第一个java代码

1.package定义包名

    1.使用层级样式管理类,最终生成目录
    2.避免命名冲突,同一个包下不能出现相同的文件,不同包可以
    3.改变类的名字
           Student.java
           包名+类名--权限类名
    4.包的命名规则
           公司的域名的倒写.组.功能
           公司的域名的倒写.功能

2.import需要用到其他包的内容

      其他包:
     1:jdk提供的类库所对应的包内容
     2.自定义的包的内容
         除了lang包
     3.public class 公有类,类名要和文件名保持一致
         class定义类
         public修饰符,公共的,共有的
         一个java文件中可以有多个类,但只有一个公共类
      4.public static void main(String[] args){}
          main方法是程序的主入口,必须满足这个格式

				System.out.println()
				方法定义格式
   					修饰符 返回值类型,方法的名字(参数列表){
			//方法体
			}
			修饰符public static

public 所有人都能调用的方法,公共方法
static 修饰的方法为静态方法
不用static修饰的就是非静态方法
多个修饰符之间可以互换顺序,但是整体方法结构不能发生改变。
返回值类型:方法调用完之后返回的数据的类型
void代表没有返回值
有返回值用return返回数据

方法名 main add delete
参数列表:接收用户输入的信息。可有可无
方法体一定是放在{}里面
静态方法不能直接调用非静态方法
可以通过创建类对象调用普通方法
所有方法一定是类或类对象调用
静态方法可以直接调用静态方法

7.编译
java -d.类名.java
-d指定生成的class文件的存放路径,指定存放类文件的位置
连同包一起编译
. (符号点) 代表存放在哪个目录下,代表当前目录
javac -d bin 类名.java
将连同包一起编译的类文件放在bin目录下
运行
java 权限类名
将class文件加载到内存中,然后为各类数据生成对应内存和地址


版权声明:本文为qq_42704737原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。