java语法\流程控制\方法\数组

Java语法

  1. 注释 标识符 关键字

    (1)注释(3种)

    • 单行注释

      //line comment
      
    • 多行注释

      /*
      block
      comment
      */
      
    • 文档注释

      /**
      JavaDoc
      */
      

    写注释是一个非常好的习惯

    平时要注意规范

    案例

    /**
     *               ii.                                         ;9ABH,          
     *              SA391,                                    .r9GG35&G          
     *              &#ii13Gh;                               i3X31i;:,rB1         
     *              iMs,:,i5895,                         .5G91:,:;:s1:8A         
     *               33::::,,;5G5,                     ,58Si,,:::,sHX;iH1        
     *                Sr.,:;rs13BBX35hh11511h5Shhh5S3GAXS:.,,::,,1AG3i,GG        
     *                .G51S511sr;;iiiishS8G89Shsrrsh59S;.,,,,,..5A85Si,h8        
     *               :SB9s:,............................,,,.,,,SASh53h,1G.       
     *            .r18S;..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,....,,.1H315199,rX,       
     *          ;S89s,..,,,,,,,,,,,,,,,,,,,,,,,....,,.......,,,;r1ShS8,;Xi       
     *        i55s:.........,,,,,,,,,,,,,,,,.,,,......,.....,,....r9&5.:X1       
     *       59;.....,.     .,,,,,,,,,,,...        .............,..:1;.:&s       
     *      s8,..;53S5S3s.   .,,,,,,,.,..      i15S5h1:.........,,,..,,:99       
     *      93.:39s:rSGB@A;  ..,,,,.....    .SG3hhh9G&BGi..,,,,,,,,,,,,.,83      
     *      G5.G8  9#@@@@@X. .,,,,,,.....  iA9,.S&B###@@Mr...,,,,,,,,..,.;Xh     
     *      Gs.X8 S@@@@@@@B:..,,,,,,,,,,. rA1 ,A@@@@@@@@@H:........,,,,,,.iX:    
     *     ;9. ,8A#@@@@@@#5,.,,,,,,,,,... 9A. 8@@@@@@@@@@M;    ....,,,,,,,,S8    
     *     X3    iS8XAHH8s.,,,,,,,,,,...,..58hH@@@@@@@@@Hs       ...,,,,,,,:Gs   
     *    r8,        ,,,...,,,,,,,,,,.....  ,h8XABMMHX3r.          .,,,,,,,.rX:  
     *   :9, .    .:,..,:;;;::,.,,,,,..          .,,.               ..,,,,,,.59  
     *  .Si      ,:.i8HBMMMMMB&5,....                    .            .,,,,,.sMr 
     *  SS       :: h@@@@@@@@@@#; .                     ...  .         ..,,,,iM5 
     *  91  .    ;:.,1&@@@@@@MXs.                            .          .,,:,:&S 
     *  hS ....  .:;,,,i3MMS1;..,..... .  .     ...                     ..,:,.99 
     *  ,8; ..... .,:,..,8Ms:;,,,...                                     .,::.83 
     *   s&: ....  .sS553B@@HX3s;,.    .,;13h.                            .:::&1 
     *    SXr  .  ...;s3G99XA&X88Shss11155hi.                             ,;:h&, 
     *     iH8:  . ..   ,;iiii;,::,,,,,.                                 .;irHA  
     *      ,8X5;   .     .......                                       ,;iihS8Gi
     *         1831,                                                 .,;irrrrrs&@
     *           ;5A8r.                                            .:;iiiiirrss1H
     *             :X@H3s.......                                .,:;iii;iiiiirsrh
     *              r#h:;,...,,.. .,,:;;;;;:::,...              .:;;;;;;iiiirrss1
     *             ,M8 ..,....,.....,,::::::,,...         .     .,;;;iiiiiirss11h
     *             8B;.,,,,,,,.,.....          .           ..   .:;;;;iirrsss111h
     *            i@5,:::,,,,,,,,.... .                   . .:::;;;;;irrrss111111
     *            9Bi,:,,,,......                        ..r91;;;;;iirrsss1ss1111
     */
    
    

    (2)标识符(类名 变量名 方法名)

    • 关键字

      image-20210705225140493

    • 标识符注意点

      • 只能以字母(大小写) _(下划线) $(dollar) 作为首字母
      • 不能用关键字作为变量及方法名
      • 大小写敏感‼
      • *可以用中文\拼音,但不建议
  2. 数据类型

    • 强类型语言(java):变量必须严格符合规定,必须先定义在使用

      image-20210706094505103

      更安全,但定义慢

    • 弱类型语言

    数据类型(两大类)

    • 基本类型(primitive type)

      image-20210706100807212

      image-20210706101759174

      image-20210706101909133

      image-20210706142653897

    • 引用类型(reference type)

    基本类型的拓展:

    image-20210706103818083

    强制类型转换😗*(基本类型)**作为前缀,如(int);

    转义字符:

    转义字符含义ASCⅡ码
    \a响铃(BEL)7
    \b退格(BS),将当前位置移到前一列8
    \f换页(FF), 将当前位置移到下一页开头12
    \n换行(LF), 将当前位置移到下一行开头10
    \r回车(CR), 将当前位置移到本行开头13
    \t水平制表(HT), 跳到下一个TAB9
    \v垂直制表(VT)11
    \ \反斜杠’ \ ’92
    \ ’单引号 '39
    \ “”双引号 " "34
    \0空字符(NULL)0
    \ddd1-3位八进制所代表的任意字符3位八进制
    \xhh1-2位十六进制所代表的任意字符2位十六进制
  3. 类型转化

    image-20210706135835461

    • 强制类型转换:(类型)变量名 高–>低

    • 自动类型转换: 低–>高

    • 注意点 :

      image-20210706141231450

      image-20210711153256214

    • 字符串类型的转换

      1. 基本类型+"" (空字符串)

      2. String.valueOf();

      3. 包装类的toString方法

        int a = 1234;
        String b = Integer.valueOf(a).toString();
        System.out.println(b);
        
    • 字符串类型的比较:

    • public static void main(String[] args) {
          String a = new String("111");
          String b = new String("111");
          System.out.println(a==b);               //错误,== 比较的是地址
          System.out.println(a.equals(b));        //正确
      }
      

    image-20210712090138757

  4. 变量 常量

    变量及作用域:

    image-20210706141749376

    • 类变量; 用static ,从属于类
    • 实(例)变量: 从属于对象, 类内方法外;不初始化则为默认值
    • 局部变量: 位于一个方法内, 使用必须声明及初始化值

    常量 :

    • final 修饰, 和static等修饰符不区分顺序:final double PI = 3.1415;
    • 常量名全大写

    命名规则 :

    • 所有变量\类名\方法, 见名知意

    • 类成员变量\局部变量: 首字母小写, 后面单词首字母大写(驼峰原则)

    • 常量: 全大写字母+下划线(过长时)

    • 类名: 首字母大写与驼峰原则

    • 方法名: 首字母小写与驼峰原则

  5. 运算符

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

      运算中出现 long 则结果为 long ; 无 long ,出现 double 则为 double ,否则为整数为 int ,小数为 float;

      image-20210706152103333

    • 赋值运算符: =

    • 关系运算符: > < >= <= == ! = instanceof

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

    • 其余运算符

      image-20210706144453930

      位运算: 2进制中按位运算

      image-20210707090059579

      ​ << 左移(*2) >> 右移(/2)

      ​ 如最快计算2*8: 2<<3

      image-20210707090438768

      条件运算符:三元运算

      x ? y : z
      //x为true,则结果为y;反之为z
      
  6. 包机制 JavaDoc

    包机制: 类似文件夹, 用于区别类名的命名空间

    • 语法格式:

      package pkg1.pkg2. ...;

    • 引用包成员:

      import pkg1.pkg2. ... .(classname|*);

      *为通配符, 引用*会导入包下所有的类

    一般利用域名倒置作为包名,如:com.wuwenzhuo.xxx

JavaDoc: 用来生成自己的API文档

  • 参数信息:

    参数名含义
    @author作者名
    @version版本号
    @since指明需要最早使用的JDK版本
    @param参数名
    @return返回值情况
    @throws异常抛出情况
  • 用cmd命令行生成:

    javadoc 参数 .java文件

    image-20210707094020311


java流程控制

用户交互Scanner

  • 通过Scanner类获取用户的输入Java.util.Scanner

  • 基本语法:Scanner s = new Scanner(System.in);

  • nextnextline获取输入

    • next:

      Scanner scanner = new Scanner(System.in);
      if(scanner.hasnext())
      {
          String str = scanner.next();
          System.out.println(str);
      }
      scanner.close();
      
    • nextline:

      Scanner scanner = new Scanner(System.in);
      if(scanner.hasnextline())
      {
          String str = scanner.nextline();
          System.out.println(str);
      }
      scanner.close();//好习惯,节省IO流空间占用
      

      可以省略if语句, 同样可以得到结果

      除了next及nextline ,还有nextint等收取特定类型输入, 对应的有hasnextint;

      image-20210707204101452

顺序结构

image-20210707233235194

选择结构

if\switch 同C语言

注意switch的case穿透, 要及时加break

JDK7新特性, switch可匹配字符串(反编译,通过hashcode)

循环结构

JDK5新特性:增强for循环

image-20210708002433906

image-20210708002538464

break \ continue

可以带标签,类似goto


java方法

类似C语言中的函数,可加修饰符

//static 使其成为类方法,可以直接调用
public static int add(int a, int b)
{
    return a+b;
}

形参:调用方法时接收外界输入的数据(定义时)

实参:调用时实际传递给方法的数据(使用时)

return 有返回值 和结束方法的作用

方法重载

  • 在一个类中,有相同的方法名,但形参不同

  • 重载规则:

    • 方法名必须相同
    • 参数列表必须不同(个数\类型\排列顺序等)
    • 返回值可以相同或不同
  • 重载优先级:

    char > int > long > double > float > Character

## 命令行传参

//String[] arg 定义了传入main方法的参数数组为args[]
public static void main(String[] args){
    for(i=0;i<args.length;++i){
        System.out.println("args["+i"]"+"="args[i]);
    }
}

可在cmd中输入java + 类名(包含包名) + 参数

可变长参数(不定项参数)

  • 方法定义时在参数类型后加 再加参数名

  • 每个方法只能有一个可变长参数, 且必须为最后一个

    public void test(int a , int ... i){}
    

    相当于可变长数组, 输出时加下标


数组

int[] nums;//声明
nums = new int[10];//创建
//可以整合声明及创建
//int[] nums = new int[10];
  • 数组的下标从0开始
  • 未赋值为初始值(如int为0)
  • 获取数组长度: array.length

内存分析

  1. 数组在声明时, 存入

    如: int[] array;声明数组

    image-20210708150758292

  2. 数组array[]在创建时, 在堆中开辟存储空间

    array = new int[10];//创建数组

    image-20210708151038657

    1. 数组赋值

      for(int i=0;i<array.length;++i){
          array[i] = i+1;
      }
      

      image-20210708151335713

数组初始化

  1. 静态初始化

    创建+赋值(用大括号 )

    int[] nums = {1,2,3,4,5,6,7,8};

  2. 动态初始化

    包含默认初始化

    int[] nums = new int[10];
    nums[0]=1;
    nums[1]=2;
    

    数组的特点

    1. 长度确定, 数组一旦被创建, 其长度无法改变;

    2. 数组的元素类型均相同;

    3. 元素类型可以是任何数据类型(基本类型\引用类型);

    4. 数组的变量相当于引用类型, 数组可以看成对象, 数组的每个元素可以看为该对象的成员变量;

      数组本身就是对象, java中的对象(由new创建)都保存在中;因此无论保存原始类型还是其他对象类型,数组对象本身是在堆中的;

    数组的使用

    1. for循环

    2. for-each循环

      int[] arrays = {1,2,3,4,5};
      for(int array : arrays){      //array依次获取arrays[]中的每个元素
          System.out.println(array);//输出数值中的每个元素
      }
      

      适合遍历数组, 但无法操作下标

    3. 数组作为参数

    4. 数组作为返回值

      //自定义方法, 实现数组倒置 
      private static int[] reverse(int[] arrays) {//reverse的类型为整型数组, 参数类型也为数组
          int length = arrays.length;
          int[] result = new int[length];
          for(int i=0;i<arrays.length;++i)
          {
              result[length-i-1]=arrays[i];
          }
          return result;//返回数组
      }
      

    多维数组

    数组的数组:

    image-20210708154906583

数组的应用

  1. Arrays 类

    import java.util.Arrays

    Arrays.toString(arrays);//转换为字符串(输出)

    Arrays.sort(arrays);//升序排序

  2. 冒泡排序

  3. 稀疏数组

    image-20210708161104596


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值