一周总结

2016-11-27  本文已影响0人  槑嘂槑
JAVA.png

快捷键

小知识

  1. 注释方法有三种
    a. //
    b. /****** 回车
    c. /*** 回车
  2. 配置classpath:
    a. java程序去classpath的目录中去寻找类
    b. java -classpath=c:\code Hello
    c. echo %path% set classpath=%classpath%;c:\code
  3. 类名与文件名的关系
    类名和文件名可以不同,编译出来的class文件的名字是类的名子 但如果类是public的,则类名必须和文件名相同,否则不能编译 一个文件可以包含多个类,但是只能有一个是public的类
  4. java 命名规范(驼峰命名法)
    a. 多个单词直接连接在一起,中间不用下划线或者横杠等
    b. 类名每个但单词首字母大写
    c. 变量名和方法名第一个字母小写,其他单词大写
    d. 尽量让名字直观易懂
  5. 如何保留需要的小数位
    DecimalFormat df=newDecimalFormat("#.00");
    /***** #表示 一个数字,不包括 0;
    *** 0表示如果没有则用0代替;保留几位就填几个0;
    */
    df.format(22.444);
  6. 改eclipse字体
    在Windows/preferences中General/Appearance/Colors and Font/Basic/text Font中的Edit;)

基本类型

八大基本类型(x(字节)*8bit) byte(字节)、short(2)、int(4)、long(8)、float(单精度 4)、double(多精度 8)、char(2)、boolean
{String不是基本类型 String是一个类}


包装类 (首字母大写)

下面两个例外:
Integer a=1;
Character c='a';
基本类型与包装类型的不同:

  1. 在Java中,一切皆对象,但八大基本类型却不是对象
  2. 声明方式的不同,基本类型无需通过new关键字来创建,而封装类型需new关键字。
  3. 存储方式及位置的不同,基本类型是直接存储变量的值保存在堆栈中能高效的存取,封装类型需要通过引用指向实例,具体的实例保存在堆中。
  4. 初始值的不同,封装类型的初始值为null,基本类型的的初始值视具体的类型而定,比如int类型的初始值为0,boolean类型为false;
  5. 使用方式的不同,比如与集合类合作使用时只能使用包装类型。
  6. 包装类是final 不会被改变
    Integer d=10;
    d=d++;//d的值仍然会是10

java 关键词

关键字包括abstract boolean break byte case catch char class continue default do double else extends false final finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient try true void volatile while
1、abstract修饰词,修饰的类是抽象类,可以包含抽象方法也可以有实例方法,但抽象方法只能存在于抽象类中,抽象方法没有方法体。
2、boolean基本数据类型,逻辑类型(取值false 和true null).
3、break返回语句常和switch语句等循环语句搭配使用
4、byte基本数据类型字节型
5、int(基本数据类型整型-232~232-1,在内存在占4个字节32位)short(短整型,占2个字节16位)long(长整型,在内存占8字节),编程系统默认数据是int类型。
6、char字符类型,在内存中占2字符。
7、float(占4个字节,后面以F结尾)和double(占8字节,后面以D结尾)类型是浮点型。
8、case常与switch搭配使用
9、class用来声明一个类。

标识符规则(不能用关键字)

  1. 第一个字符必须是字母或者_或者$
  2. 后面的字符可以是任何字符或者数字
  3. 表示符大小写敏感;(name Name 是不同的)

常量与变量

  1. 常量(不能改变)
    例: final int a; a只能给它一次赋值
  2. 变量(只能定义在方法里面)
    a. 属性(全局)变量;类除了方法还有属性
    b. 局部变量;在方法中定义的出了方法就不存在了
  3. 变量的作用域
    a. 全局变量和方法里的变量(局部变量)是可以重名的,但是先用方法中的(局部变量)
    b. 方法中的变量不能冲突;除非在相互独立的方法中
    c.局部变量只在方法中有效而全局变量类中有效
  4. 静态常量与动态常量
    静态常量可以通过 类名.+常量名直接使用而不是静态的需要先new一个对象在使用

语句

  1. for语句;
例子表示:
1到100;如果是40的倍数这该数字以后不打印;如果是五的倍数则该数字不打印
for(int i = 1; i<101; i++)
 {
    if(i == 5)
     {
     continue;
     }
   System.out.println(i);
   if(i%40 == 0)
     {
     break;
     }
 }
  1. if语句
if(i==1){
...;
}
else if(i==2){
...;
}
else
...;
  1. while语句
while(true)
{
....;
}
do
{
...;
}while(true);

a. while()先判断再执行
b. do{ }while(); 先执行再判断;

  1. switch 语句
//case只支持int byte short char   String(Enum);
public static void learnswitch(int a){
        switch(a)
        {
        case  条件1:    ........;break;
        case  条件2:    ........;break;  
        .....;
        可以写 default :       .......;break;//上述case以外的所有
        }

String 方法

数组

定义:固定长度,相同类型的元素的集合;

  1. 一维数组 nums[i]:
    a. int[] nums = {3,4,2,2};
    b. int[] nums = new int[4];{可写作int[] nums; nums=new int[4];}
    c. int[] nums =new int[]{3,2,1,4};与第一个区别在于new int[] {..}可以直接return;
  2. 二维数组 nums[i][j];
    a. int[][] nums={{2,3,4},{3,2},{32,5}};//基本和一维一样
    b. int[][] nums=new int[][]{{2,3,4},{3,2},{32,5}};
    c. int[][] nums=new int[3][];
  3. for each 循环
    for(int b:a)
    System.out.println(b);打印数组a中的所有元素;
  4. 数组排序 : Arrays.sort(a);
  5. 二维数组的数组长度
    a. nums.length为有多少行
    b. nums[i].length为有多少列
    6.数组打印方式
    System.out.println(a); 结果 [Ljava.util.Date;@2a139a55(地址)
    System.out.printlen(a[0]) 结果 打印出数组a中第0位的元素
  6. 动态数组
    ArrayList<类名> a= new ArrayList<>();可以创建一个长度不固定的类的数组;(动态数组)
    a.size()得出长度;

常见异常

  1. ArrayIndexOutOfBoundsException >>>>> 数组下标越界
  2. java.lang.StackOverflowError >>>>> 堆栈溢出;死循环

常用类

  1. import 从别的包引用的类
  2. Scanner类(用于扫描输入文本)
    Scanner sc = new Scanner(System.in);得到用户输入
  3. DecimalFormat类(格式化)
    DecimalFormat df=newDecimalFormat("#.0");
    df.format(22.444);// 保留一位小数
  4. 与 String 相关的类
    StringBuffer是线程安全的(防止多个线程访问String)
    StringBuilder不是线程安全的
    SrtingBuffer 要考虑拼接前有没有其他在用 而StringBuilder不考虑直接使用
    使用+号需要创建一个新的字符串占用内存多,效率低
    concat底层用的stringbuilder
  5. Calendar 类(日历)
    Calendar key = Calendar.getInstance();创建日历;
  6. Date类 (日期)
    Date a = new Date();//得到当前日期

算法

  1. 冒泡排序算法(从后往前)
    a. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    b. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    c. 针对所有的元素重复以上的步骤,除了最后一个。
    d. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
  2. 二分查找法
  3. 递归算法
    退出条件:if(...){return ....};
    通用公式:return ......;
    a.斐波那契序列{f(n)=f(n-1)*f(n-2);}
上一篇 下一篇

猜你喜欢

热点阅读