首页 > 编程语言 > 详细

java学习(一)

时间:2021-02-23 11:07:04      阅读:45      评论:0      收藏:0      [点我收藏+]

Markdown 学习

标题

二级标题

三级标题

字体

斜体文字

加粗

斜体加粗

废弃

引用

这是一个引用

分割线





图片

技术分享图片

技术分享图片

超链接

点击跳转到百度

列表

  1. D
  2. D
  3. D
  • 1
  • 2
  • 3

表格

姓名 性别 生日
1 2 3

代码

print("hello word");

JAVA 入门及环境搭建

Java 特性和优势

  • 简单性
  • 面向对象 :万物皆对象
  • 可移植性:跨平台 write once run anywhere ,JVM
  • 高性能:即时编译
  • 分布式:远程方法调用
  • 动态性:反射机制
  • 多线程:
  • 安全性:
  • 健壮性:异常机制

Java 三大版本

  • JavaSE: 标准版(桌面程序,控制台开放)
  • JavaME: 嵌入式开发(手机,小家电)
  • JavaEE: E企业级开发(web端,服务器开发)

JDK,JRE,JVM

  • JDK: JAVA Development kit

  • JRE: JAVA Runtime Environment

  • JVM: JAVA Virtual Machine

    技术分享图片

Java 安装环境

  1. 参考

JDK 目录结构

  1. bin:存放可执行文件
  2. include:C语言运行头文件
  3. lib:存放库文件
  4. src:资源文件,存放各种源代码

写一个Hello word

  1. 新建hello.java
public class hello{
    public static void main(String[] args){
        System.out.print("hello world");
    }
}
  1. 使用javac 编译 hello.java 并生成hello.class文件
  2. 使用java 运行hello 文件

JAVA 程序运行机制

  • 编译型:源程序编译后即可在该平台运行,运行速度快。

  • 解释型: 运行期间才编译,跨平台性能好

    java 先编译后解释

    Java和其他的语言不太一样。因为java针对不同的平台有不同的JVM,实现了跨平台。所以Java语言有一次编译到处运行的说法。

    1.你可以说它是编译型的:因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。

    2.你可以说它是解释型的:因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。

    3.但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。

    技术分享图片

技术分享图片

什么是IDE

集成开发环境(*IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。

JAVA 基础语法

注释

  • 单行注释 ://
  • 多行注释:/* */

标识符和关键字

  • 关键字:51+2个保留字=53个关键字(java的关键字都是小写的!!)

技术分享图片

  • 标识符:标识符应该都是以字母,美元符号,或者下划线开头。首字符后可以是任何字母数字符号。标识符大小写敏感

数据类型

强类型语言和弱类型语言

  • 强类型语言:要求变量的使用必须严格符合规定,必须先定义后使用。 强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.net 、Python、C++等语言。

    举个例子:定义了一个整数,如果不进行强制的类型转换,则不可以将该整数转化为字符串。

  • 弱类型语言: 弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript等语言。

    ? 举个例子:

    var A =5;
    var B = "5";
    SumResult = A +B;
    MinResult = A -B;
    

JAVA 的数据类型

  • 基本数据类型:

    技术分享图片

  • 引用数据类型:除了基本类型之外的,例如类,接口,数组。

拓展

  1. 进制 :

    • 八进制:0开头
    • 十六进制:0x开头
    • 二进制:0b开头
  2. 精度丢失:当小数存储的时候,小数用二进制存储是无限的,存储位数有限。

  3. 字符编码:ASCII,Unicode 和UTF-8:

    • ASCII: ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0

    • Unicode: 可以表示世界上的所有符号。它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

    • UTF-8: UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

      UTF-8 的编码规则很简单,只有二条:

      1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。

      2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

      Unicode符号范围     |        UTF-8编码方式
      (十六进制)        |              (二进制)
      ----------------------+---------------------------------------------
      0000 0000-0000 007F | 0xxxxxxx
      0000 0080-0000 07FF | 110xxxxx 10xxxxxx
      0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
      0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
      

      跟据上表,解读 UTF-8 编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。

      下面,还是以汉字为例,演示如何实现 UTF-8 编码。

      的 Unicode 是4E25100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800 - 0000 FFFF),因此的 UTF-8 编码需要三个字节,即格式是1110xxxx 10xxxxxx 10xxxxxx。然后,从的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,的 UTF-8 编码是11100100 10111000 10100101,转换成十六进制就是E4B8A5

  4. 大头模式和小头模式(4E25)

    Unicode:编码是四个字节FF FE 25 4E,其中FF FE表明是小头方式存储,真正的编码是4E25

    Unicode big endian:编码是四个字节FE FF 4E 25,其中FE FF表明是大头方式存储。

类型转换

技术分享图片

  • 自动类型转换:顺箭头方向,蓝色箭头会出现精度丢失。
  • 强制类型转换:逆箭头方向。
  • 注意事项:
    • 不能对布尔值进行转换
    • 不能把对象类型转换为不相关的类型
    • 高容量转换为低容量时候需要强制转换
    • 转换的时候可能出现内存溢出,或者精度问题。
    • 大数计算的时候,要注意内存溢出。

变量,常量,作用域

  • 变量可以变化的量
  • 每个变量都必须声明其类型
  • 变量是最基本的存储单元,包括变量名,变量类型,作用域。
  • 常量:带final

变量的作用域

  • 局部变量:方法内的变量,使用前必须初始化。
  • 实例变量:从属与对象。数字类型默认0,布尔值默认false,除了基本类型默认值都null。
  • 类变量(静态变量):带static的变量

变量的命名规范

  • 所有变量方法,类名:见名知意;
  • 类成员变量:首字母小写+驼峰原则
  • 局部变量首字母小写+驼峰原则
  • 常量:大写字母加下划线
  • 类名:首字母大写加驼峰原则
  • 方法名:首字母小写加驼峰原则

javaDoc生成文档

链接

流程控制学习

用户交互Scanner

public static void main(String[] args) {
        //从键盘接收数据
        Scanner scanner = new Scanner(System.in);
        //判断有无输入
        if(scanner.hasNext()){
            //nextLine() 以回车为结束,next() 以空格为结束
            String str = scanner.nextLine();  
            System.out.println(str);
        }
        //关闭该对象
        scanner.close();
    }

JAVA 内存分析

  1. 数组初始化:
public static void main(String[] args) {
    //数组静态初始化
    int[]array1 = {1,2,3,4,5,6,7};
    //数组动态初始化
    int[]array2 = new int[10];
    array2[0] = 1;
}

面向对象的编程

什么是面向对象

  • 面向对象的编程的本质是:以类的方式组织代码,以对象的组织(封装)数据。
  • 抽象
  • 三大特性
    • 封装:是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。(private set/get)
    • 继承:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。当然,如果在父类中拥有私有属性(private修饰),则子类是不能被继承的。
    • 多态
  • 从认识论角度先有对象后有类,类是对对象的抽象。
  • 从代码运行的角度是现有类再有对象,类是对象的模板。

类和对象的创建

  • 构造器(构造方法):与类名称相同且无返回值的一个方法。

    • 作用:

      • 实例化初始值,定义带参数的构造器,若想使用无参构造,需显式定义无参构造器。

        public class Student {
            String name;
            int age;
            // alt+insert 快速插入构造器
            public Student() {
            }
        
            public Student(String name, int age) {
                this.name = name;
                this.age = age;
            }
        

封装,继承,多态,重写,重载

链接

链接

多态内存解释

  • 封装:private get/set
  • 继承:extend

java学习(一)

原文:https://www.cnblogs.com/goodzhangjiahui/p/14434020.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!