• java笔记0x001:helloworld

    2019-03-28 03:16:32
    0x001 第一个java程序 编写代码 // 0x001helloworld/Helloworld.java public class Helloworld{ public static void main(String[] args) { System.out.print("hello world\n");...
        

    0x001 第一个java程序

    1. 编写代码

      // 0x001helloworld/Helloworld.java
      public class Helloworld{
          public static void main(String[] args) {
              System.out.print("hello world\n");
          }
      }
    2. 编译并运行

      $ javac Helloworld.java # 生成Helloworld.class
      $ java Helloworld # 运行
        hello world  # 输出

    0x002 注释

    // 这是单行注释
    /*
     * 这是多行注释
    /*

    注意:如果代码中出现中文,编译时应该按照添加编码选项

    $ javac -encoding utf-8 Helloworld.java
    $ java Helloworld

    0x003 基本类型

    1. int 基本类型一表看

      基本类型 大小 最小值 最大值 包装器类型
      boolean - - - Boolean
      char 16-bit Unicode 0 Unicode 2^16-1 Character
      byte 8-bits -128 +127 Byte
      short 16-bits -2^15 2^15-1 Short
      int 32-bits -2^31 -2^31-1 Integer
      long 64-bits -2^63 2^63-1 Long
      float 32-bits IEEE754 IEEE754 Float
      double 64-bits IEEE754 IEEE754 Double
      void - - - Void
    2. 基本类型的声明、初始化、调用

              int num1; // 声明一个int类型的变量num1
              num1 = 1; // 为num1赋值
              System.out.println(num1); // 输出num1的值
      
              int num2 = 2; // 声明的时候同时赋值
              System.out.println(num2); 
      
              int num3, num4; // 同时声明多个变量
              num3 = 3; // 再为变量赋值
              num4 = 4;
              System.out.println(num3);
              System.out.println(num4);
      
              int num5 = 5, num6; // 同时声明多个变量,并为其中几个变量赋值
              num6 = 6;
              System.out.println(num5);
              System.out.println(num6);
      
              int num7 = 7, num8 = 8; // 同时声明多个变量,为所有变量赋值
              System.out.println(num7);
              System.out.println(num8);

      如果调用了声明但是未初始化的变量呢?

              int num9;
              System.out.println(num9);

      编译将会报错

      $ javac -encoding utf-8 Helloworld.java
      Helloworld.java:32: error: variable num9 might not have been initialized
              System.out.println(num9);
                                 ^
      1 error
      

      调用不存在的变量呢

      System.out.printf(num);
      javac -encoding utf-8 Helloworld.java
      Helloworld.java:10: error: cannot find symbol
              System.out.printf(num);
                                ^
        symbol:   variable num
        location: class Helloworld
      1 error
      
    3. boolean 基本类型

              boolean bool1=true;
              boolean bool2=false;
              boolean bool3;
              System.out.println(bool1);
              System.out.println(bool2);
              // System.out.println(bool3);// 调用声明但是未赋值的变量调用将会报错
      
    4. char 基本类型

          char char1 = 'a';
          char char2;
          System.out.println(char1);
          //System.out.println(char2);// 调用声明但是未赋值的变量调用将会报错

      赋值为空字符串呢

      char char3='';
      System.out.println(char3);

      将会报错

      $ javac -encoding utf-8 Helloworld.java
      Helloworld.java:47: error: empty character literal
              char char3='';
                         ^
      Helloworld.java:47: error: unclosed character literal
              char char3='';
                          ^
      Helloworld.java:48: error: ';' expected
              System.out.println(char3);
                    ^
      3 errors
      
    5. float基本类型

          float float1=0.1f;
          float float2;
          System.out.println(float1);
          // System.out.println(float2);// 调用声明但是未赋值的变量调用将会报错
      

      如果不写f呢

          float float3=0.3;
          System.out.println(float3);

      整数默认是int,小数默认是double,所以会报错

      $ javac -encoding utf-8 Helloworld.java
      Helloworld.java:54: error: incompatible types: possible lossy conversion from double to float
              float float3=0.3;
                           ^
      1 error
    6. double基本类型

          double double1 = 0.1;
          double double2;
          System.out.println(double1);
          // System.out.println(double2);// 调用声明但是未赋值的变量调用将会报错
    7. long 基本类型

          long long1=1L;
          long long2;
          System.out.println(long1);
          // System.out.println(long2);// 调用声明但是未赋值的变量调用将会报错

      如果不加L呢?也是没有问题的

          long long3=1;
          System.out.println(long3);
    8. short 基本类型

          short short1=1;
          short short2;
          System.out.println(short1);
          // System.out.println(short2);// 调用声明但是未赋值的变量调用将会报错
    9. byte 基本类型

          byte byte1=1;
          byte byte2;
          System.out.println(byte1);
          // System.out.println(byte2);// 调用声明但是未赋值的变量调用将会报错
    展开全文
  • java.util.ScannerScanner 是 Java5 的新特征 它可以用于捕获用户输入的内容从它的构造方法中可以看出它支持很多类型的输入。 private Scanner(Readable source, Pattern pattern) { } public Scanner...

    java.util.Scanner

    Scanner  是 Java5 的新特征 它可以用于捕获用户输入的内容

    从它的构造方法中可以看出它支持很多类型的输入。

       
        private Scanner(Readable source, Pattern pattern) {
        }
    
      
        public Scanner(Readable source) {
        }
    
        
        public Scanner(InputStream source) {
        }
    
        public Scanner(InputStream source, String charsetName) {
        }

    下面是简单的键盘输入Demo

    package com.chz.main;
    
    
    
    import java.io.Console;
    
    import java.util.Scanner;
    
    
    
    public class ScannerDemo {
    
    	
    
    	public static void main(String[] args)
    
    	{
    
    		ScannerDemo shopDemo = new ScannerDemo();
    
    		shopDemo.show()
    
    	}
    
    	public void show() {
    
    		System.out.println("====================请输入====================");
    
    		Scanner scanner = new Scanner(System.in);
    
    		/**
    
    		 * hasNextLine遇到enter 则结束输入 也就是可以获取输入的空字符 
    
    		 * hasNext 只能在输入有内容的情况下才可以。
    
    		 */
    
    		//获取输入时先判断是否存在内容
    
    		if (scanner.hasNextLine())
    
    		{
    
    			String input = scanner.nextLine();
    
    			System.out.println("Input =>" + input);
    
    		}
    
    		if (!scanner.hasNext())return;
    
    		String input = scanner.next();
    
    		System.out.println("Input => " + input);
    
    	}
    
    }
    

    这里有对Scanner 详细的介绍

    http://www.runoob.com/java/java-scanner-class.html






    展开全文
  • bmp 格式之 0x001c = 0x20

    2011-08-01 17:29:27
    今天突然发现了一个bmp图片,它的0x001c偏移位置是0x20。我就去网上看bmp的格式说明,但找来找去都只有如下的说明():  001Ch Bits Per Pixel 1 word 每个象素的位数  1 - 单色位图(实际上可有两种颜色,...

    今天突然发现了一个bmp图片,它的0x001c偏移位置是0x20。我就去网上看bmp的格式说明,但找来找去都只有如下的说明():

     001Ch Bits Per Pixel 1 word 每个象素的位数

      1 - 单色位图(实际上可有两种颜色,缺省情况下是黑色和白色。你可以自己定义这两种颜色)

      4 - 16 色位图

      8 - 256 色位图

      16 - 16bit 高彩色位图

      24 - 24bit 真彩色位图

      32 - 32bit 增强型真彩色位图

    展开全文
  • finally总是会被执行,即使try中有break、continue、return这样的语句,如: public class FinallyTest { public static void main(String[] ... for (i = 0; ;i++) { try { if (i == 0) ...

      finally总是会被执行,即使try中有break、continue、return这样的语句,如:

    public class FinallyTest
    {
    	public static void main(String[] args)
    	{
    		int i;
    		
    		for (i = 0; ;i++)
    		{
    			try
    			{
    				if (i == 0)
    					continue;
    				else if (i == 1)
    					break;
    			}
    			finally 
    			{
    				System.out.println("loop " + i + " ends");
    			}
    		}
    		
    		try
    		{
    			return;
    		}
    		finally
    		{
    			System.out.println("return ends");
    		}
    	}
    }
    
    //output
    /*
    	loop 0 ends
    	loop 1 ends
    	return ends
    */

     

      另外,从这个例子可以看出,不写catch,直接try-finally配对也是可以的。

    展开全文
  • 0x001 概述 其实我不知道怎么写,所以决定就一块一块的写点平常配置的过程,根据不同东西稍微分区一下就好了 0x002 初始化项目结构 $ mkdir webpack_study $ cd webpack_study $ mkdir 0x001-begin $ cd 0x001-begin...
        

    0x001 概述

    其实我不知道怎么写,所以决定就一块一块的写点平常配置的过程,根据不同东西稍微分区一下就好了

    0x002 初始化项目结构

    $ mkdir webpack_study
    $ cd webpack_study
    $ mkdir 0x001-begin
    $ cd 0x001-begin

    0x003 安装webpack,并检查环境

    $ node -v
    # 输出
    v8.4.0
    $ npm -v
    # 输出
    v5.4.2
    $ cnpm -v
    # 输出
    cnpm@5.1.1 (/usr/local/lib/node_modules/cnpm/lib/parse_argv.js)
    npm@5.4.1 (/usr/local/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)
    node@8.4.0 (/usr/local/bin/node)
    npminstall@3.1.4 (/usr/local/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)
    prefix=/usr/local 
    darwin x64 16.7.0 
    registry=http://registry.npm.taobao.org
    
    $ cnpm install -g webpack
    # 输出
    Downloading webpack to /usr/local/lib/node_modules/webpack_tmp
    ...
    [webpack@3.8.1] link /usr/local/bin/webpack@ -> /usr/local/lib/node_modules/webpack/bin/webpack.js
    
    $ webpack -v
    # 输出
    3.8.1

    0x004 第一个栗子-最简单的使用方式

    这个栗子使用的是命令行打包形式,纯粹用来做测试而已,在正式项目中,我们的配置将会达到非常复杂的程度虽然命令行依旧可以实现,但是将会带来维护上的和形式上的麻烦,所以我们通常会采用配置文件的形式。
    1. 编写一个js文件

      # 0x001-begin/src/index.js
      console.log('hello webpack')
      
    2. 0x001-begin文件夹下执行命令

      $ cd 0x001-begin
      $ webpack ./src/index.js ./dist/index.js
      # 控制台输出
      Hash: d25cd23c431cf01c6a5b
      Version: webpack 3.6.0
      Time: 53ms
         Asset    Size  Chunks             Chunk Names
      index.js  2.5 kB       0  [emitted]  main
         [0] ./src/index.js 29 bytes {0} [built]
    3. 此时查看0x001-begin可以发现,多了个dist文件夹,文件夹下有一个index.js文件,这个文件就是我们通过webpack打包之后的文件,打开这个文件,我们可以发现,里面的代码都不是我们写的,这是webpack自动生成的,暂时不管,以后再去分析他,在文件末尾找一找便可以发现我们写的那句话也在里面。

      ...
      /***/ (function(module, exports) {
      console.log('hello webpack')
      /***/ })
      ...
    4. 文件引用
      平常我们在做项目的时候,会将不同的功能、不同的类写在不同的文件,使用的时候互相引用,提升项目的可维护性和可扩展性。

      # 0x001-begin/user.js
      export default function (first_name, second_name) {
          console.log('hello ' + first_name + '-' + second_name)
      }
      # 0x001-begin/index.js
      let getUserName = require('./user')
      console.log('hello webpack')
      getUserName('hello','webpack')

      user.js中我们编写了一个方法并export,然后在index.js中引入并调用,此时查看打包之后的dist/index.js文件可以发现所有的代码都打包进去了。

      ...
      /***/ (function(module, exports, __webpack_require__) {
      let getUserName = __webpack_require__(1)
      console.log('hello webpack')
      getUserName('hello','webpack')
      /***/ }),
      /* 1 */
      /***/ (function(module, __webpack_exports__, __webpack_require__) {
      "use strict";
      Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
      /* harmony default export */ __webpack_exports__["default"] = (function (first_name, second_name) {
          console.log('hello ' + first_name + '-' + second_name)
      });
      /***/ })
      /******/ ]);
      ...
    5. 命令格式说明

      webpack <entry> [<entry>] <output>
      - entry: 入口文件,可以一个也可以多个
      - output: 输出文件,可以是

      注意:

      • entry可以有多个,但是一个和多个的写法不一样,必须以entryname=filename的形式指定。同时不能直接单纯的指定输出的文件名称,比如./dist/index.js,将会报错,可以换成以下方式指定,或者其他类似方式。
    webpack index1=./src/index.js index2=./src/index2.js ./dist/[name].js
    ```
    - `entry`文件名为`index.js`的时候可以省略,将会自动在指定文件夹下寻找该文件。
    

    0x005-使用配置文件

    现在开始使用配置文件的形式来配置webpack吧!
    1. 最简单的配置文件

      # 0x001-begin/webpack.config.js
      var path       = require('path')
      module.exports = {
          entry : './src/index.js',
          output: {
              path    : path.resolve(__dirname, 'dist'),
              filename: 'index.js'
          }
      }
    2. 执行命令

      $ webpack
      # 输出
      Hash: 731e5b2dd5c8e29150e0
      Version: webpack 3.6.0
      Time: 59ms
         Asset     Size  Chunks             Chunk Names
      index.js  2.94 kB       0  [emitted]  main
         [0] ./src/index.js 96 bytes {0} [built]
         [1] ./src/user.js 112 bytes {0} [built]
      

      这里实现了我们之前使用的命令webpack ./src/index.js ./dist/index.js的功能,webpack命令自动读取文件夹下名为webpack.config.js的配置文件。
      注意:

      • 配置文件的名称不一定是webpack.config.js,如果不是该名称,需要显式的指定配置文件名称:webpack --config <path/to/config/file>
      • outputpath必须为绝对目录,所以这里使用了nodejspath模块。

    3.监听文件变化
    使用 webpack -w 可以监听入口文件变化,当然包括入口文件引入的所有文件的变化,可以利用该特性做到开发网页的时候的浏览器自动刷新

    $ webpack -w
    # 输出
    Webpack is watching the files…
    
    Hash: 731e5b2dd5c8e29150e0
    Version: webpack 3.6.0
    Time: 64ms
       Asset     Size  Chunks             Chunk Names
    index.js  2.94 kB       0  [emitted]  main
       [0] ./src/index.js 96 bytes {0} [built]
       [2] ./src/user.js 112 bytes {0} [built]
    
    

    注意:

    • 此时webpack执行完并不会退出,而是一直执行并监听文件改变,当文件发生改变,将会触发再次打包,同时控制台将将会输出重新打包之后的信息,除非你在控制台按了CTRL+C
    $ webpack -w
    # 输出
    
    Webpack is watching the files…
    
    Hash: 7ec0e3e1cfaf0227c38b
    Version: webpack 3.6.0
    Time: 66ms
       Asset     Size  Chunks             Chunk Names
    index.js  2.94 kB       0  [emitted]  main
       [0] ./src/index.js 96 bytes {0} [built]
       [3] ./src/user.js 113 bytes {0} [built]
    Hash: 731e5b2dd5c8e29150e0
    Version: webpack 3.6.0
    Time: 9ms
       Asset     Size  Chunks             Chunk Names
    index.js  2.94 kB       0  [emitted]  main
       [1] ./src/user.js 112 bytes {0} [built]
        + 1 hidden module
    ^C
    • 修改webpack配置文件之后需要手动重启webpack,新的配置才会生效。
    • 如果打包过程出现错误,比如语法错误,将会在控制台以红色文字显示,并且在你修复之后会再次打包。

    clipboard.png

    0x006 详解entry

    entry可以取一下类型的值:

    • string:'index.js'
    • array:['index1.js','index2.js']
    • object:{index:'index1.js',index2:'index2.js'}
    • function:function(){return 'index1.js'}

    具体配置可以查看webpack关于entry的章节

    0x007 详解output

    当只有一个entry时,可以直接指定output.filename,但是有多个entry时不能直接指定,否则将会报错

    ERROR in chunk *** [entry]
    ***
    Conflict: Multiple assets emit to the same filename ***

    需要指定其他方式

    • [name].js:使用entry名字
    • [id].js:使用chunk id
    • [hash].js:使用哈希
    • [chunkhash].js:使用生成的文件的哈希(推荐)

    当然,以上可以结合来用,推荐使用[name].[chunkhash].js,既能知道是哪个entry,也能让文件没有修改时候保持文件名不变,让用户在网站更新后访问时不需要重新获取该文件,直接从缓存读取文件
    还有许多其他的配置,暂时使用不到,具体配置可以查看webpack关于output的章节

    0x008 webpack指令说明

    • webpack:根据webpack.config.js打包,如果没有该文件将会报错
    • webpack --config <path/to/config/file>:根据指定的配置文件打包,如果没有该文件将报错
    • webpack -w:根据指定默认配置文件打包,并监听文件变化,在文件变化后自动打包
    • webpack -p:打包的时候对js混淆压缩

    其他更多指令说明,查看webpack关于CLI的章节

    0x009 资源

    0x010 文章整理

    展开全文
  • 0x000 概述 开坑 react 系列文章,不知道会写到什么程度,毕竟写文章并不在行,存在当做笔记做,先不讲理论,实践先行。 0x001 初始化项目格式 $ mkdir react-study $ cd react-study $ mkdir 0x001-helloworld $ ...
  • apktool反编译

    2018-09-11 19:21:25
    **下载 1.apktool.jar 2.apktool.bat 3.aapt.exe** 这三个放到一个文件夹里面,我...caused by:java.io.IOException:expected:0x001c0001,got 0x00000000 等等这样的问题 一下午血一样的教训这些错误的原因是...
  • 很多人在进行串口调试的时候会遇到这个问题,请大家略看我的代码,解决方法在其中   //实验目的:串口调试助手上输入数据0-9,然后再数码管显示 org 00H ... mov P0,#0xff//设置初始值  mov
  • 0x001 创建项目 创建一个项目 选择 SpringInitializr 填写 group、artifact,这两个可以组合成 package,一般group是项目域名倒置,artifact是项目名,然后由这两个组合成主包名。 添加 web 依赖 选择项目存储...
  • 代码: waveform = (s16*) malloc(SIZE_BUFFER);  接着free(waveform),其中SIZE_...然后出现了如下错误提示: after Normal block(#47) at 0x001D3908 我的上网找了资料,提醒是“内存越界”。 我解决的办法是:
  • int n=0; for(int i=0; s2[i]!='/0';i++) { for(int s=0;s1[s]!='/0';s++) { if (s1[s]==s2[i]) n++; break; } } return n; } int main() { char s1[100]; ...
  • Unhandled fault: alignment exception (0x801) at 0xeacd81be{014:49:781} [014:49:781] Internal error: : 801 [#1] PREEMPT{014:49:781} [014:49:781] Modules linked in: usbhid hid usb_storage sg mtk_hcd s...
  • 0x04AE53,0x0A5748,0x5526BD,0x0D2650,0x0D9544,0x46AAB9,0x056A4D,0x09AD42,0x24AEB6,0x04AE4A,/*1901-1910*/ 0x6A4DBE,0x0A4D52,0x0D2546,0x5D52BA,0x0B544E,0x0D6A43,0x296D37,0x095B4B,0x749BC1,0x049754,/*...
  • 关于stm32 ov7670二值化

    2019-07-13 14:14:04
    stm32 ov7670二值化 按照一般步骤 1、先将RGB颜色转为灰度 grey = (u8)((((color&0x00f100)>...0x001f)<<3)*29+128)/256);//将rgb565转为灰度值 这里我之前转为灰度后就直接在lcd屏上显示 ...
  • 嵌入式设备中,如果系统打印出很多类似这样的的消息:jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0000: 0x3030 instead 可以确认的是系统在挂载jffs文件系统的时候出错了。...
  • 题目链接:https://pan.baidu.com/s/1hXG2425FtgzA3H8Mjr5J2g 密码:3lmxPNG格式参考:https://www.cnblogs.com/lidabo/p/3701197.htmlPNG的文件结构PNG数据块(Chunk)PNG定义了两种类型的数据块,一种是称为关键...
  • 在写路径读文件的时候,要注意,使用"/"或者“\\”。否则就会造成这样的内存错误。 例如:“G:/test2.jpg”或者“G:\\test2.jpg”。 关于内存上的错误,首先想到的就应该是读取文件的路径出现了问题,或者是读取的...
  • 1.知识点 1.1指针数组——存放指针的数组 (1)指针数组本质上是一个数组,指针是数组中的内容,表示数组中的每个元素都是指针,因此指针数组...3 p[0] = &a; 4 p[2] = &b; (2)指针数组的定义可以抽象为...
  • 1.反编译过程中遇到如下异常: I: Baksmaling... I: Loading resource table... Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars ...at brut.androlib.res.decoder....
  • Unhandled fault: alignment exception
1 2 3 4 5 ... 20
收藏数 11,602
精华内容 4,640
关键字:

0x001 javahl native