java 基础 (一)

java 基础 (一)

java 语言的特点

  1. 面向互联网编程、安全可靠、面向对象
  2. 跨平台(操作系统) — JVM(java虚拟机): 事先在对应的操作系统上安装对应版本的JVM(提供完备的运行环境),java 程序是在JVM中进行执行,使得不同的操作系统只要是同一java程序的得到的结果是一样的。

java 语言的三大技术架构

  • J2se(基础版/标准版):主要是用于提供小型开发以及桌面服务解决方案

  • J2ee(企业版/商务版):主要是提供了企业中模块化开发、集中式开发解决方案

  • J2me(小型版):主要提供终端、嵌入式开发可能

JDK1.5版本是java的里程碑式的版本,更改三大版本的名称为 JAVASE、JAVAEE、JAVAME

Java语言的环境搭建

  • java 核心组件:

    JRE(Java Runtime Environment java运行时环境):提供了java程序执行时需要的环境

    • JRE=JVM+核心类库(java程序启动时所必须要加载的信息)

    JDK(java Devlopment Kit java开发工具包):提供了java程序的开发以及运行所需的环境

    • JDK=JRE+开发工具包

    JDK 包含 JRE 包含 NVM

  1. java工作方式:

    编写源代码文件 (.java) — > 编译器 (javac运行源代码,产生字节码文件.class) — > 输出 — > java虚拟机 (JVM): 将字节码转换成平台能够理解的形式来运行

    • .java文件(程序员可以看得懂得文件—源文件)
    • .class文件(可以被java识别的文件并可以执行的文件—字节码文件)
    • .java文件–通过javac命令—编译—.class文件
    • .class文件—通过java命令–运行–结果

Java基本语法组成

关键字

  • 在java中被赋予了特殊含义的单词一共有53个
  • const和goto都是特殊的关键字,保留字
  • 特点:都是小写

标识符

  • 英文大小写、中文字符、数字、特殊字符 ($ _)
  • 不能和关键字冲突,严格区分大小写
  • 不建议使用中文
  • 数字不能开头也不能单独使用
  • $ 和 _ 不建议随便使用
  • 命名规范(驼峰命名法)
    • 类名/接口名—XxxYyyZzz
    • 方法名/变量名—xxxYyyZzz
    • 常量名—XXX_YYY_ZZZ
    • 包名—单级 xxx;包名—多级 xxx.yyy.zzz (如com.baidu)

进制

  • 二进制:逢2进1,包含0和1,从jdk1.7开始 0b101

  • 八进制:逢8进1,包含0-7,以0开头

  • 十进制:逢10进1,0-9

  • 十六进制:逢16进1,包含0-9,a-f(不区分大小写),以0x开头

  • 十进制转二进制:十进制数/2取余,直到商为0,余数反转,即为二进制。

  • 二进制转十进制:用二进制每一位上的数字乘以2的幂次并求和

  • 二进制转八进制:从右到左,三位一组,若不够三位左侧补0,将每组的二进制转为十进制,拼接起来,就是对应的八进制

  • 八进制转二进制:将八进制每一位的数字转为三位二进制之后,拼接起来即得到二进制数

  • 二进制转十六进制:从右到左,四位一组,若不够四位左侧补0,将每组的二进制转换的数字拼接起来,就是对应的十六进制

  • 十六进制转二进制:将十六进制每一位的数字转为四位二进制之后,拼接起来即得到二进制数

码表

  • Latin-1 (ASCII):包含英文、数字、常见符号,历史上最早出现的码表,一个字符占一字节
  • GB2312:由中国国家标准定义,兼容ASCII,在ASCII的基础上增加了常用汉字,一个字符占两字节
  • GBK:兼容GB2312,增加了更多汉字,由中国国家标准定义,一个字符占两字节
  • unicode:是一种映射规则,并不是码表,为每个符号指定了一个编码,并没有指定如何映射成二进制。
  • utf-16/utf-32:兼容ASCII,将unicode定义的符号对应的数字转为定长二进制代表该符号,是Unicode的编码实现,占用2/4字节,java语言的底层使用utf-16来代表字符
  • utf-8:兼容ASCII,将unicode定义的符号对应的数字转为变长二进制代表该符号,是Unicode的编码实现,占用1-4字节,汉字在utf-8码表中占用3个字节

编码和解码

  • 计算机内存中的数据,统一使用 Unicode 编码
  • 数据传输或保存到硬盘上,使用 UTF-8 编码
  • 编码 / encode:将 Unicode 字符串转换为特定编码格式对应的字节码的过程
  • 解码 / decode:将特定编码格式的字节码转换为对应的 Unicode 字符串的过程

引用

  • 格式:数据类型 引用名称;

  • 分类:常量引用和变量引用

    • 常量:引用不会发生变化的量

    • 常量引用格式:final 数据类型 常量名; final int AGE_MAX = 18;

    • 变量:引用可以发生变化的量

    • 变量引用格式: 数据类型 变量名;

数据类型

  • 基本数据类型:整形、浮点型、字符型、布尔型

    • 整形: byte (1字节)、short (2字节)、int (4字节)、long (8字节)

      • 整数直接量默认使用int类型,如果需要使用long类型,需要加l/L后缀
    • 浮点型:float (4字节)、double (8字节)

      • 浮点数直接量默认使用double类型,如果使用float类型,需要加后缀f/F

      • float类型精确的有效位数为6-7位,double类型精确的有效位数为15-16位

      • 采用二进制的科学计数法,float 4字节 = 32 bit,最高位为符号位,8位表示指数部分,23位表示数值部分

      • 浮点型可以在程序中用科学计数法表示,如3.145e2 = 314.5

      • 程序在执行浮点数时,可能会出现精度损失问题(大部分小数转二进制是无限位数

    • 字符型:char (2字节)

    • 布尔型:boolean (1字节)

  • 引用数据类型:类、接口、数组

数值和编码

  • 真值和机器数:真值是机器数所代表的实际的值,机器数是真值在计算机中的表示。

  • 定点小数: x 1 . x 2 x 3 . . . x n − 1 x n x_1 . x_2 x_3 ... x_{n-1} x_n x1.x2x3...xn1xn 组成 – 符号 小数点 数值部分

  • 定点整数: x 1 , x 2 x 3 . . . x n − 1 x n x_1, x_2 x_3 ... x_{n-1} x_n x1,x2x3...xn1xn 组成 – 符号 数值部分

  • 机器数的原码表示:符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.

  • 使用机器数的原码直接对负数进行算数运算会出现问题,因此引入机器数的补码

  • 机器数的反码表示:正数的反码是其原码本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

  • 机器数的补码表示

    1. 整数
      • 真值 x = + x 1 x 2 x 3 . . . x n − 1 x n x= +x_1 x_2 x_3 ... x_{n-1} x_n x=+x1x2x3...xn1xn ,则 [ x ] 补 = 0 x 1 x 2 x 3 . . . x n − 1 x n [x]_{补} = 0x_1 x_2 x_3 ... x_{n-1} x_n [x]=0x1x2x3...xn1xn
      • 真值 x = − x 1 x 2 x 3 . . . x n − 1 x n x= -x_1 x_2 x_3 ... x_{n-1} x_n x=x1x2x3...xn1xn ,则 [ x ] 补 = 100...0 ( n 个 0 ) − ∣ x ∣ [x]_{补} = 100...0 (n个0) - |x| [x]=100...0(n0)x
    2. 小数
      • 真值 x = + 0. x 1 x 2 x 3 . . . x n − 1 x n x= +0.x_1 x_2 x_3 ... x_{n-1} x_n x=+0.x1x2x3...xn1xn ,则 [ x ] 补 = 0. x 1 x 2 x 3 . . . x n − 1 x n [x]_{补} = 0.x_1 x_2 x_3 ... x_{n-1} x_n [x]=0.x1x2x3...xn1xn
      • 真值 x = − 0. x 1 x 2 x 3 . . . x n − 1 x n x= -0.x_1 x_2 x_3 ... x_{n-1} x_n x=0.x1x2x3...xn1xn ,则 [ x ] 补 = 10.00...0 ( n 个 0 ) − ∣ x ∣ [x]_{补} = 10.00...0 (n个0) - |x| [x]=10.00...0(n0)x
  • 原码和补码的相互转换

    1. 对于正数: [ x ] 原 = [ x ] 补 [x]_{原} = [x]_{补} [x]=[x]

    2. 对于负数:

      原码符号位不变,其余各位取反,末位+1得补码;(即在反码的基础上+1)

      补码符号位不变,其余各位取反,末位+1得原码。

运算符

  • 算数运算符:+ - * / % ++ --

    • 字符和数值型变量进行求和,默认把字符转为ASCII,字符串常量可以和任意数据使用+进行拼接

    • ArithmeticException —— 算术异常

    • Infinity (正无穷) - Infinity(负无穷)NaN (Not a Numbe)

    • a++ or a-- :先把a的值赋值给 a++ or a--整体,再自加1

    • a++ or a--:先自增1,再把a的值赋值给 a++ or a--

    • 赋值运算符:= += -= *= \= %= &= (按位与等) |= (按位或等) ^= (按位异或等) >>=(右移等) <<= (左移等) >>>= (无符号右移等)

      • java不支持连等定义 int a=b=c=3; //error 支持int a=1, b=2, c=3; //correct

      • java支持连等赋值 int a=3; int b = a+=a-=a+=5; // -2 如果左边变量的值发生改变会影响右边变量的值,反之不会。

      • 扩展的赋值运算符 (+=,-=,…) 会加上强制类型转换

  • 比较(关系)运算符:> < == != >= <=

  • 逻辑运算符:& | ^ ! && ||

    • & 和 &&:运算规则相同,如果&&左边出现false那么右边默认不执行(短路效果),常用&&
    • | 和 ||:运算规则相同,如果||左边出现true那么右边默认不执行(短路效果),常用||
  • 位运算符:& (按位与)|(按位或) ^(按位异或) ~(按位取反) >> << >>>

    • 对机器数补码进行操作
    • 如果操作数是int类型,给定的移动位数需要对32进行取余,最后的取余结果才是底层真正的移动位数
  • 三目(元)运算符:布尔表达式 ? 表达式1 : 表达式2

键盘录入

  1. 导包: import java.util.Scaneer;

  2. 找到Scaneer: Scaneer sc = new Scaneer(System.in);

  3. 获取数据:int num = sc.nextInt();

    import java.util.Scanner;
    class JavaDemo{
        public static void main(String[] args){
            // 找到Scanner
             Scaneer sc = new Scaneer(System.in);
            // 获取数字
            int num = sc.nextInt(); //获取整数
            String str = sc.nextLine(); // 获取一行,当做字符串
            System.out.println("nums:"+ num);
            System.out.println("Str:"+ str);           
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值