zoukankan      html  css  js  c++  java
  • Java基础(一)

    java

    编写java程序流程

    • 建立文本文档,将扩展名编写为xxx.java;
    • 使用记事本/Notepad++的方式打开文件,编写java代码进行保存;
    • 启动dos窗口,并切换到.java文件所在的路径中【也可以打开.java文件所在的文件夹位置,在文件夹栏直接输入cmd即可】;
    • 输入javac xxx.java 进行编译,生成xxx.class的字节码文件;
    • 使用Java xxx进行解释执行,并打印结果

    Java跨平台原理

    • java字节码可以通过JVM翻译为具体平台能够执行的机器命令。由于sun定义了JVM规范,且不同佛如操作系统大多提供了JVM实现,使得相同的一个字节码文件可以在不同佛如系统上运行,让Java拥有了“一次编译,到处使用”的美名。

    数据类型:

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

    • 引用数据类型:数组、类、接口、枚举、标注

    进制转换

    • 十进制转二进制

      ①除2取余法:将十进制整数不断额除以2取出余数,余数逆序排序。

      ​ 例: 45转二进制 结果为:101101

      ​ 2|___45 1

      ​ 2|___22 0

      ​ 2|___11 1

      ​ 2|____5 1 ↑

      ​ 2|____2 0 |

      ​ 2|____1 1 ↑

      ​ 0

      ②拆分法:将十进制整数拆分为若干个二进制权重的和,有权重位的写1,否则为0。

    ​ 45 = >> 32 + 8 +4 +1 == >> 2⁵ + 2³ + 2² + 2⁰ == >> 1 0 1 1 0 1

    • 负十进制转换为二进制的方式

      先将十进制的绝对值转换为二进制,再进行按位取反再加1

      负数需要补码:按位取反,再加1

      ​ 按位取反:1101 0010 -45 :1101 0011

      ​ 再加1 : 1101 0011 45: 0010 1101


      • 非负数所能表示的整数范围:0000 0000 ~0111 1111 => 0~127 =>0 ~2⁷-1
      • 负数所能表示的整数范围: 1000 0000 ~ 1111 1111 => 1000 0000 =>-128 ~ -1

    ​ 1000 0000:
    【减一:0111 1111】

    ​ 【按位取反:1000 0000】

    ​ 【十进制表示:128】

    ​ 【加上负号:-128】

    ​ 1111 1111:
    【减一:1111 1110】

    ​ 【按位取反:0000 0001】

    ​ 【十进制表示:1】

    ​ 【加上负号:-1】

    • 单个字节表示的整数范围是:-128 ~ 127 => -2⁷ ~ 2⁷-1

    基本数据类型之间的转换

    • 从小类型可以自动转换为大类型

    • 强制类型转换,从大类型转小类型:目标类型 变量名 = (目标类型)源类型变量名;【强制转换是有风险的】

      ​ 如:byte + int 相加 结果是int型,强行byte = int ,int 转 byte 可能会有损失,这时就可以使用强制类型转换,将int 类型转换为byte

      ​ byte + byte 相加 结果还是int类型,这是编译器的优化结果

    • 笔试考点:byte b1 =10;

      ​ b1 += 2;//等价于b1 = (byte)(b1 + 2)

    移位运算符

    左移运算符:<< ,将数据的二进制位向左移动,右边用0补充

    右移运算符: >>,将数据的二进制位向右移动,左边使用符号位补充1、0

    逻辑右移运算符(无符号右移):>>>,将数据的二进制位向右移动,左边用0补充

    运算符

    ​ 算数运算符、字符串连接符、关系运算符、自增减运算符、逻辑运算符、条件运算符( ?: )、赋值运算符、移位运算、位运算符

    ​ 运算符的优先级:()优先级最高, = 优先级极低

    Java的分支结构

    if分支结构、if else分支结构、if else if else分支结构、switch case分支结构

    Java的循环结构

    for循环、while循环、do while循环、双重for循环

    数组

    一维数组:

    ​ 数组名:记录一维数组在内存空间中的地址信息,便于下次访问

    ​ 数组元素:指存放在数组中的数据内容

    ​ 数组长度:指数组中最多可以存放的元素个数,通常可以使用 数组名.length获取

    ​ 数组下标:指数组元素在数组中的编号,从0开始到长度-1

    • 基本类型的数组创建后,其元素的初始值:byte、short、char、int、long为0;float和double为0.0;boolean为false。

    ​ 语法格式: 如:① 动态方式: 声明数组,但没有初始化数组:

    ​ int[ ] arr = new int[长度]

    ​ ② 静态方式: 数组声明的同时,对数组元素进行初始化:

    ​ 数据类型[ ] 数组名称 = {初始值1,初始值2,.......}

    二维数组

    • 二维数组本质上就是由多个一维数组叠起来的数组,二维数组中每个元素都是一维数组,而一维数组中的每个元素才是数据内容。

    • 声明: 数据类型[ ] [ ] 数组名称 = new 数据类型 [行数] [列数];

      ​ 如:int[ ] [ ] arr = new int [长度] [ ];

      ​ arr.length代表二维数组arr的长度,就是元素个数(二维数组中每个元素都是一维数组),就是行数;

      ​ arr[0].length代表二维数组中第一个元素的长度,即一维数组的长度,就是第一行的列数。

    声明一个数组,就是在堆区开辟(new)一块空间,用来存储数组中的元素,再将其地址存储在栈区的变量中。

    内存结构之堆区:JVM会在其内存空间中开辟一个称为“堆”的存储空间,这部分空间用于存储使用了new 关键字创建的数组和对象。

    内存结构之栈区:用于存放程序运行过程当中所有的局部变量,一个运行的java程序从开始到结束会有多次变量的声明。

    数组的优缺点

    • 可以直接通过下标(或索引)的方式访问指定位置的元素,速度快。
    • 同一数组要求所有元素的类型相同
    • 数组要求内存空间连续,并且长度一旦确定就不能修改
    • 增加和删除元素时,移动元素量太大,效率低

    数组的复制

    int[] arr = {11,22,33,44,55,22};
    int[] brr = new int[3];
    brr = arr;
    

    表示数组名arr的内存空间中存放的是数据在堆区中的内存地址信息,

    赋值后让brr变量中存放了arr所指向堆区的内存地址,也就是让brr和arr指向了同一块堆区空间

    本质上就是改变指向而已

    java的数组工具类

  • 相关阅读:
    LeetCode【709. 转换成小写字母】
    静态方法、变量与实例方法、变量之比较心得
    用户控件自定义 DependencyProperty 属性使用教程
    TypeLoadException: 未能从程序集“ECS.GUI.Define, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中加载类型“ECS.GUI.Define.ArmgAimPos”,因为它在 4 偏移位置处包含一个对象字段,该字段已由一个非对象字段不正确地对齐或重叠
    ABP 框架实战系列(三)-领域层深入篇
    ABP 框架实战系列(二)- 领域层介绍篇
    ABP框架实战系列(一)-持久层介绍篇
    EF Core 基础知识
    EF Core Migration 报错:An error occurred using the connection to database '' on server '10.28.253.2'
    2020年总结:互联网思维下的工业软件开发
  • 原文地址:https://www.cnblogs.com/dreamtown/p/14009896.html
Copyright © 2011-2022 走看看