mumayiren

JAVA基础语法

我曾七次鄙视自己的灵魂: 第一次,当它本可进取时,却故作谦卑; 第二次,当它空虚时,用爱欲来填充; 第三次,在困难和容易之间,它选择了容易; 第四次,它犯了错,却借由别人也会犯错来宽慰自己; 第五次,它自由软弱,却把它认为是生命的坚韧; 第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副; 第七次,它侧身于生活的污泥中虽不甘心,却又畏首畏尾。

标识符

  • float结尾要用f标识,long类型结尾要用L标识

  • byte类型是-128—127

  • 因为浮点数是有限且离散的,包含涉入误差,所以尽量避免使用浮点数,银行业务使用的是BigDecimal类(数学工具类)

  • int()等可以进行强制类型转换,依据Unicode字符集(0-65536),excel表格也是0-65536(2的16次方),Unicode本质是一个表,存储着数字与字符的对应关系,将要进行强制类型转换就查询这张表(u0000-uffff)

  • 转义字符 如\t 制表符 \n 换行

进制问题

  • 八进制开头为0

  • 十六进制开头为0x

  • sout出来的值为十进制形式

类型转换

  • 强制转换 (int)a

  • 自动转换 低到高

  • 不能对布尔值进行转换(因为是bool是按位运算)

  • 不能把对象类型转换为不相干的类型

  • 高容量到低容量只能进行强制转换,期间可能发生内存溢出或者精度

    下面的total仍然会溢出,因为两个运算数是int类型,用来存储的临时变量也是int类型,解决方案是long total=money*(long)years;

    int money=10_0000_0000;
    int years=20;
    long total=money*years;

     

Tips

JDK7新特性,数字内加可以加下划线

 

变量

  • 类变量 在类里,方法外定义,需要加static关键词,从属于整个类,本身是静态的

  • 实例变量 同类变量相似,只是不需要加static,从属于对象,不进行初始化的话会有默认值,0、null、false等(除了基本类型其他默认值都是null)

  • 局部变量 定义在方法里

  • 常量

    • 一般用大写字母命名

    • final(类似于const)是一种修饰符,定义常量,修饰符不存在先后顺序

  • 变量命名

    • 常量 大写字母+下划线

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

    • 方法名,类成员变量,局部变量都是首字母小写+驼峰原则

    • 驼峰原则:除了第一个单词小写,后面每一个单词首字母大写,如lastName,monthSalary,为的是区分每个单词的位置

运算符

  • 输出一个short变量和byte变量相加的结果,这个临时变量是int类型

  • 进行运算时,可以用Math类调用类方法进行数学运算

  • 运算短路

    • int c=5;
      system.out.print((c<4)&&(c++<4));
    • 因为已经判断c<4;后面的语句将不再被执行,c仍然是5

  • 位运算 移位运算 :2<<3相当于2*8

包机制:package

  • 包的本质是一个文件夹,类似于一个作用域

  • 一般利用公司域名倒置作为包名com.zhang.www(三级逐渐向下)

  • 想要使用使用其他包的内容,需要导入(import)那个包(include头文件)

JavaDoc生成文档

  • JavaDoc命令是用于生成自己的API

  • 分为注释类和注释方法两种类型

    package Demo;
    /**
    * @author hechongwei
    * @version 1.0
    * @since 1.8
    */
    public class Demo02 {
       String name;

       /**
        *
        * @param name
        * @return
        * @throws Exception
        */
       public String text(String name) throws Exception{
           return name;
      }
    }
  • 生成javadoc文档

    • 在类文件目录下打开控制台,输入javadoc -encoding UTF-8 -charset UTF-8 +文件名即可自动生成,中间的参数用于防止中文导致的乱码

    • 使用IDEA生成JavaDoc文档:tools-generate-JavaDoc,注意输入参数

和崇伟作业2

  • 标注的部分比较重要,从上到下分别是配置javadoc的范围,输出文件路径以及命令行参数

  • 只有使用utf-8编码才能保证生成时可以正常处理中文字符

  • 除此之外,还可以注解哪些需要生成,哪些权限类需要生成等等比较精细的控制

  • 不要勾选"include text sources",会生成奇怪的错误

 

JAVA流程控制

 

用户交互Scanner

基础语法

Scanner s=new Scanner(System.in);
  • 类似于c++里的cin,用于获取用户输入的数据

  • Scanner是一个工具类,next()与nextLine()方法获取输入的字符串,hasNext()与hasNextLine()判断是否还有输入的数据

  • 输入指令是System.in,用一个流对象接收并存储,用if(hasNext())等判断是否有输入队列

  • next()以空白为结束符,nextLine()以回车为结束符

循环结构

  • 100.for可以快速生成一个for循环,可以从0到99也可以从99到0

  • System.out.print()输出不会换行,但System.out.println()会输出完换行

  • 便利数组的for循环

    int[] nums={10,20,30,40};
    for(int x:nums)
    {
       System.out.println(x);//x是数组每个元素的副本
    }
  • break:可以终止循环,而continue:终止此次循环,跳到下一次循环

  • java没有goto关键词,但是可以使用带标签的break和continue实现goto

 

方法

相当于c++的函数

  • 方法包含于类与对象中 System.out.println()就分别是类-对象-方法

  • 方法写法

    public int add(int a,int b){}

命令行传参

  • 了解即可的知识点

  • 点击最下行的command打开控制台,也可以在当前目录下打开cmd,注意类所属的包的位置,在src目录下输入java com.kuang.method.Demo03从而运行这个类的main方法,但是如果这个方法有参数,可以在后面附带上参数

可变参数

public void text(int...i){
   System.out.println(i[3]);
}
  • 可以输入多个参数,相当于输入一个数组

  • 有一定的限制:

    • 一个方法中只能指定一个可变参数

    • 这个可变参数必须是方法的最后一个参数,任何普通参数都必须在它之前声明

异常抛出

发生异常就会弹出异常,如ArrayIndexOutOfBoundsException:数组下标越界

public void readFile(String file) throws IOException{
   
}

 

数组

  • 数组的声明与定义

//声明数组
int[] a; //首选,这是java风格
int a[] //c/c++风格,这种类型java也是支持的
//数组的定义
int[] a=new int[10];

//也可以
int[] a={1,2,3,4,5}
//
int n=a.length();

堆和栈

  • 创建一个数组时,在栈里创建它的引用,new出空间时,这片空间属于堆,栈里的数据记录了堆里所属空间的地址

  • 数组的内容,无论是原始类型还是其他类型,都是保存在堆中的

数组的初始化

//静态初始化
int[] a={1,2,3,4,5}
//动态初始化,//只能挨个进行复制,每个空间的默认值为0
int a=new int[10];

ArrayIndexOutOfBoundsException:数组下标越界

数组的使用

  • 对于for循环,可以使用增强型的for循环

    • int[] arrays={1,2,3,4,5};
      for(int arr:arrays){} //arr是每个元素的副本
      //数组作为方法的参数
      public static void returnArray(int[] arrays){
         return arrays;
      }
      //

 

Java面向对象编程

 

类方法调用

//静态与动态调用的差别是有没有static关键词
//静态调用,
public class Student{
   public static void hasSay(){
       System.out.println("学生说话了"); //用整个类调用,调用形式为Student.hasSay();
  }
}
//动态调用
public class Student{
   public void hasSay(){
       System.out.println("学生说话了");
  }
}

public class Demo{
   public static void main(String[] args){
       Stundet stu=new Student(); //创建一个对象需要这么写
       stu.hasSay();
  }
}
  • static方法是和类一起加载的,生成时期非常早,而非static方法是和对象一起加载的,只有当实例化时才会生成,于是static方法不能调用非static方法

 

 

 

分类:

技术点:

相关文章: