Java入门

Java 入门笔记

目录

java 版本


  1. JavaSE(java Standard Edition):标准版 ,定位在个人计算机上的应用。
  2. JavaEE(java Enterprise Edition):企业版 ,定位在服务器端的应用。
  3. JavaME(java Micro Edition):微型版 ,定位在消费型电子产品的应用上。

java 虚拟机 —— JVM


  1. jvm:程序运行的环境,jvm 让 java 具有 跨平台性
  2. jre:java 程序运行时的环境,包含 jvm 和运行时所需要的 核心类库
  3. jdk:java 程序开发工具包,包含 jre 和 开发人员 使用的工具。

java 内存划分


  1. 栈(Stack)

    • 局部变量:方法的参数,或者方法内部的变量。
    • 作用域:一旦 超过 作用域 { },立即从栈内存当中 消失
    • 特点:
      • 栈是方法执行内存的模型,每个 方法 调用都会创建一个 栈内存 用来存储局部变量、操作数、方法出口等。
      • jvm 会为每个线程创建一个栈。
      • 栈线程 私有,不能实现线程的共享。
      • 栈存储特征是 “先进后出,后进先出”。
      • 栈是个连续的内存空间,速度快。
  2. 堆(Heap)

    • 凡是 new 出来的东西,都在 “堆”当中。
    • 堆用于存储创建好的对象和数组。
    • jvm 只有一个堆,被所有线程共享。
    • 堆是不连续的内存空间,分配灵活,速度慢。
  3. 方法区(MethodArea)

    • 方法区实际上也是堆,只用于存储类、常量相关的信息。
    • jvm 只有一个方法区,被所有线程共享。
    • 用来存放程序中永远不变或唯一的内容。
  4. 本地方法栈(NativeMethodStack):与操作系统相关。

  5. 寄存器(PCRegister):与 PC 相关。

java 注释/关键字/标识符


  1. 注释

    • 单行注释://
    • 多行注释: /* */
    • 文档注释:/** */
  2. 关键字

    • java 编程语言保留字。
    • 标识符起名不可以使用关键字。
  3. 标识符

    1. 命名规则
      • java 对大小写敏感。
      • 标识符可以给变量、类、方法和包进行命名。
      • 标识符必须以字母、下划线或美元符号 $ 开头。
    2. 驼峰命名法
      • 表示 类名 使用大驼峰。(就是所有单词都大写)
      • 表示 方法变量 使用小驼峰。(就是除了第一个单词,所有都大写)

常量和 final(字符常量)


输出格式:

  1. 字符常量

    System.out.println("ABC");
    
  2. 整数常量

    System.out.println(30);
    
  3. 浮点数常量

    System.out.println(3.14);
    
  4. 字符常量

    System.out.println('A');
    
  5. 布尔常量

    System.out.println(true);		// 布尔常量只有 true 和 false
    
  6. 字符常量

    final 数据类型 变量名;			// 被 final 修饰的变量只能赋值一次
    
  7. 注意

    • println 中 ln 表示换行的意思。

变量


  1. 变量分类

    1. 局部变量
      1. 方法中的变量。
      2. 局部变量在栈内存。
      3. 局部变量没有默认值。
    2. 成员变量
      1. 类中方法外的变量。

      2. 成员变量在堆内存。

      3. 成员变量有默认值。

        数据类型默认值
        int0
        double0.0
        char\u0000
        booleanfalse
    3. 静态变量
      1. 静态变量又称类变量
      2. 使用 static 定义
  2. 赋值方法

    1. 第一种 赋值方法
      数据类型 变量名;
      变量名 = 元素;
      
    2. 第二种 赋值方法
      数据类型 变量名 = 元素;
      
    3. 注意
      • float 类型赋值必须在元素后面添加 F
      • long 类型赋值必须在元素后面添加 L

数据类型


  1. 基本数据类型

    1. 字符类型:char
      • 字符类型在内存中占 2 个字节。
      • char 类型用来表示 Unicode 编码表中的字符。
      • 在 print 中使用两个 char 类型需要使用 + 拼接。
    2. 字符串类型:String
    3. 布尔类型:boolean
    4. 数值类型
      • 整数类型:byte、short、int、long
      • 浮点类型:float、double
  2. 引用类型

    1. 类:class
    2. 接口:interface
    3. 数组
  3. 转义字符

    转义符含义Uniocde值
    \b退格\u0008
    \n换行\u000a
    \r回车\u000b
    \t制表符\u0009
    "双引号\u0022
    \ ’单引号\u0027
    \ \反斜杠\u005c
  4. 数据类型转换

    1. 自动转换
      1. 特点:代码不需要进行特殊处理,自动完成转换。
      2. 规则:数据类型只能从小到大转换。
      3. 自动转换类型:
        1. byte -> short -> int -> long
        2. char -> int -> double
        3. float -> double
    2. 强制转换
      1. 特点:代码需要进行特殊处理。
      2. 格式:小数据类型 变量名 =(大数据类型)元素
      3. 注意事项:
        • 强制类型转换可能发生 精度损失数据溢出
        • 如果两个数 超过 了原本的数据类型,可以在计算的时候把其中一个转换成大数据类型。

运算符


  1. 运算符分类

    运算符符号
    算术运算符+、-、*、/、%(取余)、++(自增)、–(自减)
    赋值运算符=、+=、-=、*=、/=
    比较运算符>、<、==、>=、<=、!=(不等于)
    逻辑运算符&&(与)、||(或)、!(非)、^(逻辑异或)
    位运算符&、|、^、~、>>、<<、>>>
    三元运算符? :
    字符串连接符+
      • 运算符有优先级,可以通过 “( )”进行优先级设置。
  2. 算术运算符

    1. 算术运算规则
      1. 如果两个数有一个是 long,结果为 long,否则结果为 int。
      2. 如果两个数有一个是 double,则结果为 double,否则结果为 float。
    2. 加法的多种用法
      1. 对于“数值”来说,就是加法。
      2. 对于“char”来说,就是自动转换成 int 类型,在计算。
      3. 对于“String”来说,就是把两个“String”拼接起来。
        • 在 String 类型后面 使用 加法会使数据类型发生拼接。
    3. 自增自减
      1. 单独使用没有区别。
      2. 在混合使用的时候:
        1. 前++:先自增,后运算。
        2. 后++:先运算,后自增。
    4. 取模运算(又称求余运算):
      1. 浮点数可以使用,一般使用整数。
      2. 格式:变量名=整数%整数
        • 注意:运算过程中有大数据类型,结果将会被转换成大数据类型。
  3. 赋值运算符

    1. 基本 格式:数据类型 变量名 = 元素
    2. 注意
      1. 只有变量能赋值,常量不能赋值。
      2. 赋值运算符中蕴含了一个强制类型转换。
      3. 如果赋值运算符右边有算术运算符,则会先运算算术运算符再赋值。
      4. 使用符合运算符需要先初始化。
  4. 比较运算符(又称关系运算符)

    1. 大部分用在判断语句。
    2. 两个元素比较,结果为真表示 true,否则表示 false。
  5. 逻辑运算符

    1. &(与):两边结果全都是真才是 true,否则为 false。
    2. |(或):两边结果有一个为真就是 true,否则为 false。
    3. &&(短路与):只有一个为 false,就返回 false。
    4. ||(短路或):只有一个为 true,就返回 true。
    5. !(非):本来是 true,变成false,本来是 false,变成 true。
    6. ^(异或):相同为 false,不同为 true。
    7. 注意:
      • 逻辑运算符只能使用 Boolean 值,进行判断。
      • 与 、或,如果有多个条件,可以连续写。
  6. 位运算符

    1. 位运算指的是 二进制运算

    2. 位运算说明:

      位运算符含义
      ~取反
      &按位与
      |按位或
      ^按位异或
      <<左移运算符,左移 1 位相当于乘 2
      >>右移运算符,右移 1 位相当于除 2 取商
  7. 三元运算符

    1. 一元 运算符:只需要一个元素就可以进行运算的运算符。
      • 如:自增、自减…
    2. 二元 运算符:需要两个元素才可以进行运算的运算符。
      • 如:加减法…
    3. 三元 运算符:需要三个元素才可以进行运算的运算符。
      1. 三元运算符 格式数据类型 变量名 = 判断条件 ? 元素1:元素2;
      2. 运行 规则
        • 如果判断条件为 true,则返回元素1,为 false 返回元素2。
      3. 三元运算符可以在元素的位置通过 “( )”嵌套 三元运算符。
      4. 注意
        • 必须同时保证元素1 和元素2 都和左侧数据类型相同。

判断语句(又称选择语句)


  1. if 语句

    1. if 语句的 三种 用法:
      1. 单判断
        if(判断条件){
        	语句体;
        }
        
      2. 双判断
        if(判断条件){
        	语句体;
        }else{
        语句体;
        }
        
      3. 多判断
        if(判断条件){
        语句体;
        }else if(判断条件){
        语句体;
        }else{
        语句体;
        }
        
    2. 注意
      1. 判断条件值为布尔值。
      2. 判断条件可以使用逻辑运算符。
  2. switch 多选择结构

    1. 格式
      switch(表达式){
      	case 元素1:
              语句体;[break;]	//如:System.out.println()
      	case 元素2:
              语句体;[break;]
      	default:
              语句体;[break;]
      }
      
    2. 注意
      1. case 后面的 “值”不可以重复。
      2. switch 中的表达式只能是基本数据类型和引用数据类型。
      3. switch 具有穿透性,运行时没有 break 会继续执行。

循环语句


  1. 循环结构分为 两大类

    • 一类是当型
    • 一类是直到型
  2. 循环基本结构

    1. 初始化语句:循环开始最初执行,只做一次。
    2. 条件判断:如果成立循环继续,否则循环结束。
    3. 循环体:重复要做的事情。
    4. 步进迭代:控制循环的语句。
  3. for 循环

    1. 格式
      for(初始化语句;条件判断;步进迭代){
      	循环体;
      }
      
    2. 注意
      1. 重复 次数确定 的使用 for 循环。
      2. 初始化语句如果有多个条件可以通过 逗号分隔
      3. 在 for 循环初始化语句中定义的 变量,在 for 循环外不能使用。
  4. while 循环

    1. 格式
      while(条件判断){
      	循环体;
      	步进迭代;
      }
      
  5. do … while 循环

    1. 格式
      do{
      	循环体;
      	步进迭代;
      }(条件判断语句);
      
  6. 循环的特点

    1. for 和 while 循环如果判断条件不成立,则不会执行,do … while 循环会执行一次。
    2. 只有 for 循环有初始化语句。
    3. 三个循环都能使用循环 嵌套
  7. 控制函数

    1. break 函数
      1. 结束循环。
      2. switch 语句中当做结束语句。
    2. continue 函数
      1. 结束本次循环,进行下一次循环。
      2. 大部分在循环中使用。
    3. 标签 break 和 continue 函数(就是 goto 语句)
      // 本标签的作用是调到开头
      标签名:for(初始化语句;条件判断;步进迭代){
      	if(条件判断){
      		break 标签名;	// 设置标签
      	}
      }
      // java 支持标签,但不支持使用。
      

语句块


  1. 使用括号括起来简单 java 语句。
  2. 语句块没有名字。
  3. 用来确定局部变量的作用域。

方法


  1. 概述

    1. 方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数。
  2. 方法的 三要素

    1. 返回值类型
    2. 方法名称
    3. 参数列表
  3. 方法格式

    1. 方法声明格式
      // 无返回值
      [ 修饰符 ] void 方法名( [数据类型 形参] ){
      	方法体;
      }
      
      // 有返回值
      [ 修饰符 ] 返回值类型 方法名(数据类型 形参){
      	方法体;
      	return 返回值;
      }
      
    2. 方法的调用
      类名 对象名 = new 类名();
      对象名.方法名()
      
      1. 调用说明:
        1. 如果要直接调用需要添加 static [修饰符]
    3. 方法详细说明
      1. 返回值类型:用于规定返回值的数据类型。
      2. 数据类型:用于规定方法接收的数据类型。
      3. 参数名:在方法声明时用于接收外界传入的数据。
      4. 实参:调用方法时传给方法的数据。
      5. 返回值:方法调用完返回给调用处的数据。
    4. 方法的重载
      1. 方法重载只有名称相同。
      2. 重载的条件
        1. 形参类型、形参个数、形参类型顺序不同。
        2. 只有返回值或形参名称不同不构成重载。
    5. 方法注意事项
      1. 实参和形参数据类型和个数必须匹配。
      2. return 语句会终止程序,并不允许有程序在 return 后面。
      3. java 中方法参数传递的是数据的副本。
      4. 基本数据类型传递的是该数据值的 copy 值。引用类型也一样,但指向的是同一对象。

递归算法


  1. 递归 基本思想 是 “自己调用自己”

  2. 递归结构包括两部分

    1. 递归头:递归结束条件,如果没有将陷入死循环。
    2. 递归头:控制递归开始。
      public static void main(String[] args) {
          System.out.println(方法名(1));
      }
      // 方法
      static int  方法名(int a) {
          // 递归头
          if(a == 1){
          return a;
          // 递归体
          }else{
          return am(a+1);
      	}
      }
      
  3. 递归优点:程序简单。

  4. 递归缺点

    1. 占用大量系统堆栈。
    2. 内存消耗多。
    3. 调用层次多时速度比循环慢。

函数


  1. 随机数
    1. Math.random()
      1. 格式
        double 变量名 = Math.random();
        
      2. 使用:
        1. 可以通过强制转换将随机数转换成 int 类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值