一、数据类型转换

 1、引用数据类型

  包装类型:Byte、Short、Long、Integer、Character、Float、Double、Boolean

 2、基本类型与包装类转换

   Java里有8种包装类,分别对应8种基本数据类型

   基本数据类型是值类型,包装类是引用数据类型

  ① 基本数据类型转成包装类型,即值类型转成引用数据类型成为装箱

    int m=20;

    Integer num2=new Integer(m);

    boolean b1=false;

    Boolean bool3=new Boolean(b1);

  ② 包装类型转成基本数据类型,即引用数据类型转成值类型成为拆箱

    Integer num=new Integer(10);

    //可以通过.语法来调用对象的方法

    //intValue是要获取对象的int型的值

    int n=num.intValue();

    Boolean bool=new Boolean(true);

    boolean bool2=bool.booleanValue();

    Double d=new Double(2.244);

    double d1=d.doubleValue();

 3、字符串与基本类型转换

  ① 字符串转成基本数据类型

    String s="36";

    //***包装类对象.parse***(参数)方法

    //是将字符串转成基本数据类型***

    int n2=Integer.parseInt(s);  //转换成int型

    double d2=Double.parseDouble(s);  //转换成double型

    String f="1.2f";

    float f2=Float.parseFloat(f);  //转换成float型

  ② 基本数据类型转换成字符串

    String s=String.valueOf(123);

    String s=Integer.toString(123);

    String s=123+"";

二、分支与循环

 1、顺序结构

 2、选择结构

  ① 顺序选择(单个条件和多个条件)

     if(条件){

     }else if(条件2){

     }else{

     }

  ② 嵌套if选择结构

  ③ switch选择结构:

     switch(表达式){

     case(常量1):

       语句1;

       break;   //跳出

     case(常量2):

       语句2;

       break;

     default:

       语句3;

       break;

     }

  if与switch的联系与区别:

 * switch和if-else相比,由于使用了优化算法(Binary Tree),绝大部分情况下switch会快一点,除非是if-else的而第一个条件就为 true

 * 等值分支使用switch

 3、循环结构(while,for,do while,foreach语句)

  (1) while循环

    特点:先判断,再执行

     while(循环条件){

       循环操作

     }

  (2) do while (选择是否要先执行一次:while/do while)

   特点:先执行(最少执行一次),再判断

    do{

      循环操作

    }while(循环条件);

  (3) for循环:先判断,再执行(已知循环次数)

    for(表达式1;表达式2;表达式3){

    循环操作;

    }

   for(参数初始化;条件判断;更新循环变量){

    循环操作;(循环体被执行)

  }

  执行顺序:参数初始化--->条件判断--->循环操作--->更新循环变量

三、 数组

 1、定义

  (1) 数组是一组变量集合,存储相同数据类型的一组数据

   数组:在内存中开辟的一串用于存储相同数据类型的连续空间!!

  (2) 数组名:表示连续空间的首地址,通过地址可以依次访问数组所有元素。

  (3)下标:元素在数组中的排序叫做下标,从0开始。

  (4) 数组长度一旦声明,将不可改变,不可追加。

 2、数组名:即标识符,连续空间的首地址

   匈牙利命名法(所有字母都小写)

 3、数组的声明

  1)明数组:int[] arr; 或  int arr[];  //声明一个int类型的数组

  2)给数组分配空间:arr=new int[5];

    Exception---数组下标越界(运行错误)

  3)给数组赋值:

   ① arr[0]=1;

   ② 使用循给数组赋值

  4)访问数组数据:使用数组下标访问

  [数组声明缩写]

  *  int[] arr={1,2,3,4,5};    //自动分配五个空间

  *  int[] arr=new int[]{1,2,3,4,5};    //new int[]的[]一定不能放内存大小

 5、基本数据类型和引用数据类型

  1)基本数据类型:声明时直接在栈内中开辟空间,并直接在当前空间中存放数据;

    赋值时传递的是变量中的值。

    基本数据类型是传值的

  2)引用数据类型:声明引用数据类型(数组或对象),会将实际的数据存放在堆内存中。

    同时,在栈内存中声明一个数组名或对象名,存放着在堆内存中的首地址;

    所以,当使用数组名赋值时,传递的是地址。

    引用数据类型是传地址(引用)的。

四、Arrays工具类

  Array工具类是Java中提供的用于操作数组的工具类,位于java.util包中。

 1、Arrays.equals(arr1, arr2):接受两个数组,返回两个数组是否向相等

   比较的原理是,逐一比对两个数组中的每一个值,是否相等。

    int[] arr1={1,2,3,4,5};

    int[] arr2={1,2,0,4,5};

    System.out.println(Arrays.equals(arr1, arr2));  输出:false

   而如果使用==判断,是比较两个数组名中存储的地址,是否相等。

    int[] arr1={1,2,3,4,5};

    int[] arr2={1,2,3,4,5};

    System.out.println(Arrays.equals(arr1, arr2));  输出:false

    int[] arr1={1,2,3,4,5};

    int[] arr2=arr1;

    System.out.println(Arrays.equals(arr1, arr2));  输出:true

 2、Arrays.sort(arr):对数组进行升序排列,会直接改变原数组的排序。

   Arrays.sort(arr,3,6):对数组的指定区域进行排序,左闭右开区间,包含其实下标,不含结束下标;

    int[] arr={1,5,2,9,4,3,6,0,2,6,7};

    Arrays.sort(arr);

    Arrays.sort(arr,3,6);  //左闭右开

    System.out.println(Arrays.toString(arr));

 3、Arrays.toString(arr): 将数组转成字符串,转换之后的格式:[1,2,3,4]

 4、Arrays.fill(arr, 12): 将数组的每一项,都赋值为指定的数值

    int[] arr=new int[10];

    Arrays.fill(arr, 12);

    System.out.println(Arrays.toString(arr));

 5、Arrays.copyOf(arr, 50):将arr数组的指定个数,copy到一个新的数组;

   如果个数>arr.length 则新数组中多余的位置用默认值补齐;

   如果个数<arr.length 则只copy原数组的前半部分。

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

    int[] newArr=Arrays.copyOf(arr, arr.length);  //copy整个数组

    int[] newArr=Arrays.copyOf(arr, 50);  //copy前50个元素

    System.out.println(Arrays.toString(newArr));

 6、Arrays.binarySearch(arr, 4) : 查找数组中的指定元素,如果找到返回下标,没有找到返回负数;

   使用这个方法,原数组必须是有序的,可以先使用Arrays.sort(arr);进行排序

    int[] arr={1,2,3,4,5,6};

    Arrays.sort(arr);

    System.out.println(Arrays.binarySearch(arr, 4));

五、字符串

 (一) String类

  1、String类位于java.lang包中,java.lang包是Java的语言包,使用时无需导包,自动导入。

  2、拿到一个字符串对象:

   ① 字面量声明:String s="好好学习";

   ② new关键字声明:String s1=new String("好好学习");

  3、s.length(): 返回字符串的长度,length()是一个方法,使用时注意不能掉() (arr.length是属性)

    System.out.println("请输入用户名:");

    String s=in.next();

    if(s.length()<6){// s.length()是方法

    System.out.println("用户名最小为6位!");

    }

  4、s1.equals(s2): 判断字符串是否相等

   .equals()的比对原理,是判断两个字符串的每一个字符是否相等;

    == 的比对原理,是判断两个字符串中存储的地址是否相等。

  5、s1.equalsIgnoreCase(s2): 忽略大小写对比;

    .toLowerCase(): 将所有字符都转化为小写;

    .toUpperCase(): 将所有字符都转化为大写;

     String s1="JH";

     String s2="jh";

     System.out.println(s1.equals(s2));

     System.out.println(s1.equalsIgnoreCase(s2));

     System.out.println(s1.toLowerCase());

     System.out.println(s2.toUpperCase());

  6、连接字符串:

   ① 使用+号连接;

   ② 使用s.concat(s2)连接,将s2连接到s1的后面,并返回一个新的字符串

     String s="好好学习";

     String s1=s.concat("天天向上");

     System.out.println(s1);

  7、① .indexOf(): 在字符串中查找指定的字符或子串 第一次出现的位置,并返回其下标,如果没有找到返 回-1;

     可以接受字符串、字符、整数类型的参数,如果传入整数,将根据ASCII码自动转化为字符(A-65,a-   97)。

   ② .lastIndexOf(): 在字符串中查找指定的字符或子串 最后一次出现的位置,并返回其下标,如果没有找到返回-1;

      String s="abcdedfg";

      System.out.println(s.indexOf("cde"));

      System.out.println(s.indexOf(100));//查找d

      System.out.println(s.lastIndexOf(100));

  8、.substring(): 截取字符串的指定位置,返回一个新的子串;

   ① 传入一个参数,表示起始下标,将从此下标开始,一直截到字符串最后;

   ② 传入两个参数,表示起始下标和结束下标,为左闭右开区间,包含起始,不含结束

      String s="abcdefg";

      System.out.println(s.substring(3));

      System.out.println(s.substring(3,5));

  9、 .trim(): 去掉字符串两端的空格

      String s="   abc def gh  ";

      System.out.println(s);

      System.out.println(s.trim());

  10、s.replace("a","*"): 将字符串中的指定区域,用 新的字符串替换掉

      System.out.println(s.replace("a","*"));

  11、 .split();

   ① .split(""): 传入指定字符,将字符串分割为多个子串,返回一个字符串类型的数组;

    如果传入一个空字符串,则将原来字符串的每一个字符串都进行分割。

      String s="haha haha haha";

      String[] arr=s.split("");

   ② .split(" ",30): 第二个参数,可以传入一个整数,表示将当前字符串分为几部分;

    如果传入的整数,小于原来分割的总部分,则剩余的区域将不再分割。

      String[] arr=s.split(" ",2);

      System.out.println(Arrays.toString(arr));

 (二) StringBuffer 类

  1、StringBuffer是String的增强版,位于java.lang包中;

  2、StringBuffer与String的最大区别在于:StringBuffer是可变可追加的;

   而String一旦声明不可改变,不能插入;

      StringBuffer sb=new StringBuffer("好好学习");

  3、.toString(): 将StringBuffer类型,转换成String类型;

   但在输出时,可以不用转换,将自动进行转换。

     String s=sb.toString();

     System.out.println(sb);  //相当于调用了.toString()方法

  4、.append(): 在原字符串的最后追加新的字符。

   ① 原字符串会被直接改变;同时还会将追加的字符串返回;

   ② append可以接受各种类型的参数,会自动转换成字符串后追加到原字符串最后。

     char[] c={'a','b','c','d'};

     StringBuffer sb1=sb.append(c);

     System.out.println(sb);

     System.out.println(sb1);

     StringBuffer sb2=sb.append("天天向上");

     System.out.println(sb2);

  5、 .delete():传入两个下标,表示删除这两个下标之间的字符,左闭右开区间

     StringBuffer s=sb.delete(0, 2);

   .deleteCharAt(2): 传入一个下标,删除指定位置的一个字符。

     StringBuffer s=sb.deleteCharAt(2);

  6、 .insert():在原字符串的指定下标位置插入

     StringBuffer s=sb.insert(3,"好");

Java基础小记的更多相关文章

  1. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  2. effective java读书小记(一)创建和销毁对象

    序言 <effective java>可谓是java学习者心中的一本绝对不能不拜读的好书,她对于目标读者(有一点编程基础和开发经验)的人来说,由浅入深,言简意赅.每一章节都分为若干的条目, ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  5. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  6. 最适合作为Java基础面试题之Singleton模式

    看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...

  7. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  8. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  9. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

随机推荐

  1. java基础学习系列一

    判断语句 1,if条件判断语句 if(){} if(){} else{} if(){}else if(){} else() if判断一共这3张情况.if后面的值是boolen类型 2,switch条件 ...

  2. Android短信验证码倒计时

    有两种实现方法 1.第一种方式:Timer /** * Description:自定义Timer * <p> * Created by Mjj on 2016/12/4. */ publi ...

  3. [机器学习Lesson 2]代价函数之线性回归算法

    本章内容主要是介绍:单变量线性回归算法(Linear regression with one variable) 1. 线性回归算法(linear regression) 1.1 预测房屋价格 该问题 ...

  4. Algorithm --> 矩阵链乘法

    动态规划--矩阵链乘法 1.矩阵乘法       Note:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义.一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C. #include ...

  5. C++ STL 容器之栈的使用

    Stack 栈是种先进后出的容器,C++中使用STL容器Stack<T> 完美封装了栈的常用功能. 下面来个demo 学习下使用栈的使用. //引入IO流头文件 #include<i ...

  6. 关于HTML使用ComDlg ActiveX 无法弹出相应对话框的问题1

    最近发现,开发的Web应用在客户的某些IE(8,9,11)中弹出不了Windows的字体对话框. 通过 F12 跟踪,错误代码是“-2146827850”,错误信息是“ 对象不支持ShowFont属性 ...

  7. python学习笔记1——基础

    1)注释 单行注释以#开头,例:#第一个注释 多行注释可用多个#号,还有'''和""",例: #第一行注释 #第二行注释 ''' 第三行注释 第四行注释 ''' &quo ...

  8. python 信号处理

    linux开发中,通常会在进程中设置专门的信号处理方法,比如经常使用的CTRL+C,KILL等信号.如果你熟悉liunx编程,那么python等信号处理方法对你来说就很简单,下面的内容将主要介绍pyt ...

  9. 用C语言协助办公_01 找出所有不对劲的人

    近期想出一系列用C语言协助办公的视频教程,这是第一个.具体的移步:https://chuanke.baidu.com/v6658388-240377-1789288.html

  10. ExecutorService实际上是一个线程池的管理工具

    在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过Executor来启动线程比用 Thread的start()更好.在新特征 ...