美文网首页
Java学习

Java学习

作者: 初心安在 | 来源:发表于2018-11-01 14:20 被阅读0次

    排序:https://www.cnblogs.com/onepixel/articles/7674659.html
    Windows中 换行 \r\n Linux中 换行 \n

    1. 编译环境 compiler 运行环境 install JREs 在window下的references里
    2. 快捷键:首选项 java editor templates

    1.垃圾回收
    当内存不在被引用时,如 person p = new person() p = null; finalize() 会回收对象
    System.gc() 向虚拟机发出申请,但会不会回收不知道
    2.this 相当于对象 this()调用构造方法时 要位于首行。
    3.static修饰的变量成为静态变量,为所有的对象共享,可以直接通过类名来访问;static只能修饰成员变量,不能修饰方法中的局部变量;static修饰的方法称为静态方法,可以通过类名直接调用;静态方法只能访问类的静态方法(静态变量,静态方法)
    4.普通代码块:在方法名后或方法体内用大括号{}括起来的一段代码
    构造代码块:
    静态代码块:static修饰的代码块,它是最早执行的代码块
    5.内部类

    1. image.png

    6.类中有有参的构造方法时,默认的无参构造方法便不会被创造
    7.子类中没有显式地调用父类的构造方法,那么将自动调用父类中不带参中的构造方法;如果子类构造方法中既没有显示调用基类构造方法,而基类又没有无参数的构造方法,则编译出错。子类中默认有final()
    https://www.cnblogs.com/z-sm/p/7604227.html
    8.final 修饰的类不能被继承
    修饰的方法不能被子类重写
    修饰的变量是常量,初始化后不能被修改。

    1. image.png
    2. 变量名 instanceof 类名
      判断一个对象是不是一个类或接口的实例
      11.多线程
      1.线程的创建: 继承Thread 重写run方法 创建对象 对象.start
      实现Runnable接口 重写run方法 创建对象 创建并开启线程对象

    12.线程的生命周期
    新建 就绪 (阻塞) 运行 死亡
    13.线程的调度
    1.优先级:setPriority() getPriority() 设置和读取优先级
    MAX_PRIORITY NORM_PRIORITY MIN_PROIRITY
    对象.setPriority(Thread.MAX_PRIORITY);
    2.线程休眠 Thread.sleep(2000); 休眠两秒
    3.线程让步 yield() 方法不会使线程阻塞。只是将线程转换为就绪状态,也就是正在执行的线程暂停一下,线程调度器重新调度一次,有可能还会将暂停的程序调度出来继续执行,这就是线程让步。 Thread.yield();
    4.线程插队 join()
    对象.join() 则该对象就会停止运行
    5. 后台线程 setDaemon(boolean on) 若参数为true 则为后台线程
    isDaemon() 判断一个线程是不是后台线程
    14.线程同步
    synchronized(obj){

    }
    用synchronized 修饰run 方法也可以提供线程同步
    15.死锁
    16.Integer 类的构造方法
    public Integer (int value)
    public Integer (String s)
    两者都是创建一个Integer对象,它表示int值 这样一个Integer对象在数值上与int无疑
    但它是对象

           int i=10;
           Integer in= new Integer ("10");
           Integer at =new Integer(20);
           String s = new String("20");
           System.out.println(in+at);                       //30
           System.out.println(in.valueOf(s));          //20
           System.out.println(i+in);                         //20
           System.out.println(in instanceof Integer);  //true
           System.out.println(in.toString() instanceof String);  //true
    

    自动装箱和拆箱机制:基本类型值与包装类的对象相互自动装换。

    Integer in =10;           //自动装箱成Integer
           System.out.println(in);//10
           int i = in;                  //自动拆箱为int
           System.out.println(i);//10
    

    Scanner类的用法

     Scanner sc = new Scanner (System.in);//System.in一定要有
          System.out.println("输入内容,当内容为exit时程序结束");
          while(sc.hasNext())    //判断是否有下一个输入
          {
              String s = sc.next();   //nextInt  nextLong 等
              if(s.equals("exit"))   //equals 与== 是不一样的
              {
                  break;
              }
              System.out.println("输出的内容为"+s);
          }
          sc.close();//释放资源
        }
    

    17.filewriter的用法


    image.png

    18.IO异常处理


    image.png
    19.打包
    1. 新建一个文件夹做目录(编译地址在生成的java文本目录下进行)
      javac -d 目录地址 文件名 会在目录地址生成一个与包名相同的文件夹


      image.png
    2. 新建一个文件 写配置清单
      Main-Class:空格包名.类名
      回车


      image.png

      3.编译 (编译在目录地址下进行)
      jar -cvfm 名字.jar 清单名 生成的文件夹名(即包名)
      20.IO流
      1.字节流
      接口 OutputStream InputStream
      类(FIleOutputStream BufferOutputStream FileInputStream BufferInputStream)
      InputStream 类的方法
      void close()
      int read() 从输入流中读取数据的下一个字节
      int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中,返回读取的字节数
      int read(byte[] b,int off,int len) 将输入流中最多len个数据字节读入byte数组

    OutputStream 类的方法
    void close()
    void flush()
    void write(byte[] b) 将b.length个字节从指定的byte数组写入此输入流
    void write(int b) 将指定的字节写入此输入流
    void write(byte[] b,int off,int len) 将指定byte数组中从偏移量off开始的len个字节写入此输入流

    FileInputStream fis = new FileInputStream("read.txt");
    int n=512;
    byte buffer[] = new byte[n];
    while(fis.read(buffer,0,n)!=-1)  //
    {
       System.out.println(new String(buffer));
    }
    
    
    image.png
    image.png image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    重点掌握 FileInputStream FileOutputStream BufferInputStream BufferOutputStream
    的用法
    read() 慢 read(byre[] b) read(byte[] b,int off,int len) 快
    BufferInputStream 的写法 是将 FileInputStream 对象传入 装饰设计模式

    JSP
    <% %> java程序片段 在service方法中
    <%= %> 输出表达式 在service方法中的out.print();之中,所以不可加分号
    <%! %> 声明成员 与service方法同级。如成员变量,方法等

    <%= %> 与什么都不写的区别
    <%= %> 是在out.print();函数中,可以使用变量 <% int x=1,y=2;%> 则<%= x+y%> 会在页面输出3
    什么都不写意味在<body></body>标签内写x+y 会输出x+y

    注释:
    html 会出现在html代码和java代码中
    java // /* */ /****/ 只会出现在java代码中
    jsp <%-- --%> 不会出现在java代码和html代码中
    java代码就是jsp被编译的java文件 html代码就是在显示页面上 右键-->查看页面源代码

    22.commons-dbutils-1.6.jar作用
    在最基层查询数据的时候,我们通常用的则是Statament,这个就是将sql语句直接发给sql数据库,当外界发生变化的时候,很容易影响结果,很容易受到占位符的影响。于是就产生了进化版本,使用Preprastament替代statemnet,这个则是预编译的意思。直接则是将sql语句缓存起来,加入其他的占位符,外界也没有办法影响到预编译的结果。
    可以说,Preprastament是Statament升级后的产物。查询的结果使用ResultSet结果
    至于今天说的这个架包commons-dbutils-1.6.jar,里面主要是一种查询方法,但是这个工具的优点就是可以将数据整理成各种结构。
    QueryRunner queryRunner=new QueryRunner();//直接与数据库沟通交流的主要方法
    ,里面对PreparedStatement方法进行了包装,根据数据结果,选择对应的方法,可以将数据结果打包成各种不通的数据结构,是使用框架的时候必备的框架。

    23.vector的用法
    https://blog.csdn.net/weixin_41743247/article/details/90635931
    24.java符号&、| 、~、^、&&、||、!

    位逻辑运算符:
    &:
    位与运算符,只有两个操作数都是true,结果才是true。
    | :
    位或运算符,只有两个操作数都是false,结果才是false。
    ~:
    位非运算符:如果位为0,结果是1,如果位为1,结果是0.
    取反后为补码,然后在取回来  其实  ~n=-(n+1)  记住就行
    ^:
    位异或运算:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。
    int i=15 j=2    i^j=13
    位同或运算:两个数转为二进制,然后从高位开始比较,如果相同则为1,不相同则为0。java中并没有同或运算符,可以通过异或转换得到。同或运算 = 异或运算  ^  1
    
    逻辑运算符:
    &&:
    逻辑与运算,也是只有两个操作数都是true,结果才是true。但是如果左边操作数为false,就不计算右边的表达式,直接得出false。类似于短路了右边。
    ||:
    逻辑或运算,也是只有两个操作数都是false,结果才是false。但是如果左边操作数为true,就不计算右边的表达式,直接得出true。类似于短路了右边。
    !:
    逻辑非运算,对操作数取反。
    

    25


    image.png

    相关文章

      网友评论

          本文标题:Java学习

          本文链接:https://www.haomeiwen.com/subject/trqxxqtx.html