美文网首页
Java-01初识Java

Java-01初识Java

作者: 哆啦_ | 来源:发表于2020-06-10 13:54 被阅读0次

Java的3大版本

  • Java有三大版本,Java SE, Java ME, Java EE

  • Java SE(Java Platform. Standard Edition, Java平台标准版) 是Java ME,Java EE的编程基础,可以用来开发一些桌面应用,游戏

  • Java ME Java平台微型版。 主要应用在移动设备和嵌入式设备,比如手机,PDA,电视机顶盒等

  • Java EE Java平台企业版,主要用于企业级应用,比如电子商务网站,后台管理系统。 属于后台开发的范畴

C\C++的跨平台原理

C\C++的源代码(.c,cpp文件)

Mac: 源文件编译成Mach-O格式的文件(机器指令已经存储在Mach-O文件中),然后再在Mac上运行

Windows:源文件编译成PE格式的文件,然后运行在windows上
Linux: 源文件编译成ELF格式的文件,然后运行在Linux上

C.jpeg

使用平台相关的编译器生成对应平台的可执行文件 也就是需要多次编译,针对不同平台编译出对应的可执行文件

Java的跨平台原理

JVM:(Java Virtual Machine):Java虚拟机

Java跨平台原理.jpeg

在Mac/Windows/Linux 上安装JVM

源文件(,java文件)编译成字节码(,class文件),然后各平台上的JVM会对字节码进行解析,解析成机器指令,然后程序就可以运行起来了

所以Java的跨平台是一次编译,到处运行,编译出的是跟平台无关的字节码文件

Java为何开发效率高?

  • 跨平台

    • 不用操心编译器
  • 垃圾回收机制

    • 不用手动管理内存
    • 不用担心内存泄漏
    • 不用担心循环引用
  • 历史悠久,强大的技术生态圈

    • 各种成熟强大的第三方库,辅助工具

Java开发必备

两个软件:JDK, JRE

JDK:(Java Development Kit) java开发工具包,提供了开发中用到的各种常用工具

JRE: (Java Runtime Environment)java运行环境,将开发完的java程序运行到JVM上

Java语法须知

  • 每一条语句都必须以分号;结尾
  • Java语言中的方法就是其他语言中的函数
  • 程序的入口时main方法,没有main方法Java程序无法启动
  • 方法必须包含在class内部,先有class, 再有方法
  • public class的名称必须要和文件名一致

Java对象

分为基本数据类型和引用类型

基本数据类型:byte char short int long float double boolean

引用类型: 除了基本类型之外的类型, 数组,对象

类型转换

  • 拓宽基本类型转换
    数据范围小的转为数据范围大的,可以自动转换
  byte b = 12;
// byte转为short
  short s = b;
  // short转为int
  int i1 = s;
  • 窄化基本类型转换: 数据范围大的转为数据范围小的,可能会丢失精度,需要强制转换
    • short 转byte,char short和char都是两个字节,但他们互相转化的时候 java中规定了他们转换的时候也要强制转换
    • char 转 byte, short
    • int 转 byte, short, char
    • long转byte, short, char,int
    • folat转byte,short, char, int, long
    • double转byte,short, char,int, long, float

这几种需要强制转换

short s = 512;
char c = (char) s;
byte b = (byte) c;

double d = 1.23;
float f = (float) d;
int i = (int) d;

Java数组

数组中存放的并不是对象的内存,而是对象的地址,基于C语言都是这样

数组元素存储在堆空间,指针存储在栈空间

方法

参数传递

值类型是值传递,对象是引用传递,传递的是地址

方法签名

方法签名由方法名参数类型组成, 不包括返回值

同一个类中,不能定义两个方法签名一样的方法

方法的重载(Overload)

Java的方法支持方法重载:方法名相同,方法签名不同。
也就是方法名相同,参数类型/个数不同

栈帧(frame)

栈帧可以理解为分配给方法的栈空间,
栈帧随着方法的调用而创建,方法的结束而销毁。存储了方法的局部变量信息

Java的内存划分

java的内存划分与c/c++略有不同

  • PC寄存器(Program Counter register):存储java虚拟机当前执行的字节码指令的地址

  • Java虚拟机栈(Java Virtual Machine Stack): 存储栈帧

  • 堆(Heap):存储GC管理对象,也就是我们new出来的对象

  • 方法区(Method Area):存储每一个类的结构信息(比如字段(成员变量名称)和方法信息,构造方法和普通方法的字节码)

  • 本地方法栈(Native Method Stack): 用来支持本地方法的调用,比如C语言编写的方法

对象

java中的对象都是new出来的,所有对象的内存都是在堆空间,所有保存对象的变量都是引用类型

Java运行时环境有个垃圾回收机制(GC),会自动回收不再使用的内存。

当对象没有任何引用指向时,会被GC回收掉内存。

构造函数

构造函数没有返回值和返回类型,方法名必须和类名一致。

构造函数可以调用另一个构造函数


public class Dog {
  public int age;
  public double weight;
  public String name;
  public double price;
  // 构造函数也是在方法区
  public Dog(String name, int age, double weight) {
    this.name = name;
    this.age = age;
    this.weight = weight;
  }
  public Dog(){
    // 调用另一个构造器
    this("", 0, 0);
  }
  // 存储在方法区
  public void run() {
    System.out.println(price + "_run") ;
  }
  // 存储在方法区
  public void eat() {
    System.out.println(price + "_eat");
  }

}

this的本质是一个隐藏的,位置最靠前的方法参数(面向对象编程的语言基本都是如此)

方法都是存储在方法区,而不是存储在每个对象所在的堆空间,也就是说方法只会存储一份,不是对每个对象的方法都存储,这样太浪费空间。

包(package)

Java中的包就是其他语言中的命名空间,包的本质是文件夹,常见的作用

  • 将不同的类进行组织管理,访问控制
  • 解决命名冲突

命名建议

为了保证包名的唯一性,一般使用公司的域名。
全小写,以避免与某些类名或者接口名冲突

类的第一句代码必须使用 package声明自己属于哪个包

package urils;

public class StringUtils {

}

java中没有别名的概念

相关文章

  • Java-01初识Java

    Java的3大版本 Java有三大版本,Java SE, Java ME, Java EE Java SE(Jav...

  • java-01

    java文件命名规范 以 .java结尾 class类 注意代码规范,缩进 java运行首先我们在编辑器里面编译好...

  • Java语言基础一(变量、数据类型、运算符、流程控制、数组)

    初识java语言 Java SE -- Java Platform, Standard Edition 是 Jav...

  • Java初识

    Java初识 @(Java学习) 一、Java简介 Java是由Sun Microsystems公司于1995年...

  • 初识Java

    1 初识Java 目录 1 初识Java1.1 概述1.2 特点1.3 环境搭建与开发工具1.3.1 环境搭建1....

  • 初识JAVA

    JAVA分为 JAVASE(基础版)/JAVAEE(企业级)/JAVAME(移动版) JAVA语言特点简单性面向对...

  • 初识Java

    Java是什么? Java是于1995年由Sun公司推出的面向对象程序设计语,他的创始人是詹姆斯·高斯林(Jame...

  • 初识Java

    上一期中我们聊到的面向对象的演进过程的3个发展阶段在Java中得到很好的体现,本期我就带着大家领略下Java世界的...

  • 初识Java

    一.Java简介 1.概念: Java是一种高级的面向对象的程序设计语言,是一种通过解释方式来执行的语言,java...

  • 初识Java

    1.什么是Java Java是一种极富创造力的,面向对象的程序设计语言,有较高的安全性,应用于企业网络和Inter...

网友评论

      本文标题:Java-01初识Java

      本文链接:https://www.haomeiwen.com/subject/jpxhvhtx.html