• Java 学习 第一篇


    1:Java文档注释;
    使用javadoc工具可以提取程序中文档注释来生成API文档;
    javadoc命令的基本用法;
    javadoc 选项 java源文件/包
    javadoc -d {} -windowtitle {} - doctitle {} -header {}
    2:数据类型和运算符
    byte 1 short 2 int 4 long 8 float 4 double 8 boolean 1 char 1;
    3:java自动类型转换;
    char ->
    int ->long->float->double
    byte->short->
    注意byte类型不能自动转换成char类型;
    强制类型转换:从上边箭头右边的转换为左边时,需要使用强制类型转换;格式(target Type)value;

    public static void main(String[] args) {
    
    // TODO Auto-generated method stub
    System.out.println("强制类型转换示例");
    int i=128;
    byte s=(byte)i;
    byte s1=(byte)(i-1);
    byte s2=(byte)(i+1);
    byte s3=(byte)(i-10);
    System.out.println(s);
    System.out.println(s1);
    System.out.println(s2);
    System.out.println(s3);
    System.out.println((byte)233);
    }
    View Code

    output:
    强制类型转换示例
    -128
    127
    -127
    118
    -23
    因为32位的int转换为byte类型时候直接将最后8为截断赋值,
    3.2:另外所有的byte short 和 char 类型在参与算术表达式运算时候将发生自动提升;
    例如 short s=2;s=s-1;将会产生错误;
    3.3:string类型直接量不能赋给其他类型变量null类型直接量可以赋给任何引用类型的变量包括string类型。
    4:运算符
    + - * / % ;
    & 按位与;
    | 按位或
    ~ 按位非
    ^ 按位异或
    << 左位移运算符
    >> ....
    >>>无符号右位移运算符
    示例:

     1 public static void main(String[] args) {
     2 // TODO Auto-generated method stub
     3 System.out.println("位运算");
     4 
     5 String str =null;
     6 System.out.println(str);
     7 System.out.println(str);
     8 System.out.println(5|9);
     9 System.out.println(1<<1);
    10 System.out.println(1<<2);
    11 System.out.println(-128>>1);
    12 System.out.println(-128<<1);
    13 System.out.println(-1>>>1);
    14 
    15 }
    View Code


    output:
    位运算
    null
    null
    13
    2
    4
    -64
    -256
    2147483647
    扩展赋值运算符;
    +/-/*///= %= &/|/~/^/= <</>>/>>>/=
    5:数组
    数组的定义;
    type[] arrayName;
    type arrryName[];
    静态初始化:arrayName=New type[]{,,,,,,};
    arrName ={,,,,,,,};
    动态初始化数组;只进行数组的长度的定义;
    Type[] arrayName=new Type[N];
    int [] ints=new int[10];

    5.1 数组的遍历:foreach
    语法格式 for(Type TempVar:arrayName)
    示例如下:

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("foreach");
    
    String[] strArry={"1","2","3","4"};
    for(String temp:strArry)
    {
    System.out.println(temp); 
    }
    for(String temp:strArry)
    {
    temp="1";
    System.out.println(temp);
    }
    }
    View Code


    output:
    foreach
    1
    2
    3
    4
    1
    1
    1
    1
    5.2关于数组,数组是一种引用数据类型,数组引用变量只是一个引用数组元素和数组变量在内存中是分开存放的。
    数组引用变量可以执行任何有效的内存,只有当该引用指向有效内存后才可以通过该数组变量来访问数组的元素;
    也就是说:
    实际的数组元素被存在堆内存(heap)中,数组引用变量是一个引用类型的变量,被存在栈内存(stack)中,数组引用变量就像是“指针”;
    示例:

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("数组长度可变?");
    String[] strArry={"1","2","3","4"};
    String[] strArry1=new String[2];
    
    System.out.println("Length of strArry1="+strArry1.length);
    strArry1=strArry;
    System.out.println("Length of strArry1="+strArry1.length);
    
    }
    View Code


    output:
    数组长度可变?
    Length of strArry1=2
    Length of strArry1=4
    从上述程序来看两次输出数组的长度发生改变;但实际上不是数组长度发生改变而是数组引用的内存空间发生改变,这种操作会让人觉得数组长度变了;
    由上述例子来看:看数组时候应把数组看成两个部分一个是数组引用一个是实际数组本身,而数组本身死存放在系统内存里的通常无法直接访问,只能通过数组引用变量来访问它;
    5.3多维数组;比如二维数组其实可以看做是数组内容是引用类型的数组 这个引用类型数组的每一个元素又是一个一维数组的引用;

    public static void main(String[] args) {
    int[][] a;
    a=new int [2][];
    for(int i=0;i<a.length;i++)
    {
    System.out.println(a[i]);
    }
    a[0]=new int[2];
    a[0][1]=6;
    a[1]=new int[9];
    for(int i=0 ;i<a[0].length;i++)
    {
    System.out.println(a[0][i]);
    } 
    
    for(int i=0;i<a.length;i++)
    {
    System.out.println(a[i]);
    }
    }
    View Code

    output:
    null
    null
    0
    6
    [I@785d65
    [I@3bc257
    前2个输出元素是 引用类型因为没有为其开辟堆内存所以输出结果为null即为空引用;
    中间2个为一维数组(a[2])[2]的两个值得输出
    最后输出为经过赋值以后 引用类型的值 可以看出他们指向一块内存区域;
    很神奇的事情是 “二维数组”(把二维数组看做是行列结构的数组)的第一行和第二行长度可以不相同这是很神奇的;

    阿南 On the way.
  • 相关阅读:
    web服务器有哪些_nodejs的工作原理是什么
    WebRTC的运行流程和运行机制到底是怎么进行的
    认识WebRTC的整体架构以及它重要的目录结构是什么
    api接口风格restful风格的十大规范
    Mysql中高级操作中的视图_事务_索引_账户权限管理
    C#常见几种集合比较
    堆(Heap)和栈(Stack)
    线程同步的几种方式
    使用临时表大批量插入数据
    select出来的表增加递增列
  • 原文地址:https://www.cnblogs.com/RealMan/p/3669110.html
Copyright © 2020-2023  润新知