前言,不知不觉,从接触java到工作至今已有两年的时间,突然感觉自己的基础知识还很薄弱,有些知识虽然知道,但是停留在表面上,没有深挖,或者实践过,感觉掌握的很肤浅,而且时间一长,就觉得忘记了,我觉得这种状态实在不好,作为一名开发人员,不应该只是会用,能满足需求就满足,而不去深究为什么这样做就行,它的实质是什么,底层到底是怎么样的结构,这样才能达到知其然知其所以然,所以,我觉得在工作闲暇时间,重新对我所认识的java进行一遍梳理,总结,实践,温故而知新嘛,希望我可以坚持下来,争取突破自己!!!

                                                                                                                                                                                           2015年9月10日

                                                                        刘月

  1.java数据类型

  在java中,有两大类数据类型:基本类型,引用类型,就是说除了8种基本类型,都是引用类型。而基本类型细分如下:

  byte (8位有符号整数:表示范围:-128~127 -128~-1:10000000~11111111;0~127:00000000~01111111 )

  short  (16位有符号整数)

  int  (32位有符号整数)默认类型

  long  (64位有符号整数)后缀L或l

  float  (32位有符号小数)后缀F或f

  double  (64位有符号小数)默认类型 后缀D或d

  char(字符型)  Java 字符采用unicode编码,每个字符是一个16位无符号(不是补码,没有负数)整数,范围0~65535

常用的字符编码对应:

  字符          编码

'0'~'9'    48~57

'A'~'Z'    65~90

'a'~'z'     97~122

 boolean (1byte 8位,但实际上只占用了1bit,0或1即可)

 补充:对于 byte short int long 4种类型,在定义和赋值时,小类型(表示范围小的)自动转化成大类型,反过来要强转,否则编译器会报错

       char也可强转成int(char本身就是整数,可以直接参与运算)

    随机生成A~Z随机字符demo

 public static void main(String[] args) {
          Random random = new Random();
          int n = random.nextInt(26);//[0,26)
          char c = (char)('A' + n);//计算生成 A~Z 的随机字符
        System.out.println(c);
 }

  2.java语言特点
  Java是强类型语言:变量是强类型的
  1)变量必须用明确类型声明。
  2)变量必须初始化以后才能使用。
  3)变量有作用域,离开作用域就回收
  4)变量不能重复定义 
 
    3.进制基础
 数学:计数的规律
 10进制:是逢10进1 的计数规则
 权:10000 1000 100 10 1 每个数位上代表1的个数
 基数:10  进位规律
 数字:0 1 2 3 4 5 6 7 8 9
 权是基数的n次幂
 
 2进制: 是逢2进1 的计数规则
 权:128 64 32 16 8 4 2 1 每个数位上代表1的个数
 基数:2  进位规律
 数字:0 1
 权是基数的n次幂
 
  10   2
  0    0
  1    1
  2   10
  3   11
  4  100
  5  101
  6  110
  7  111
  8 1000
  9 1001
 10 1010
 11 1011
 12 1100
 13 1101
 14 1110
 15 1111
 
 11000000(2) = 128 + 64 = 192(10)
 11000101(2) = 128 + 64 + 4+1 = 197(10)
 
 234(10) = ?(2) = 11101010(2)
 
           128 64 32 16 8 4 2 1
 234(10) =  1   1  1  0 1 0 1 0 (2)
           106 42 10    2   0
 201(10) = ?(2)
 218(10) = ?(2)
 188(10) = ?(2)

16进制: 是逢16进1 的计数规则
 权:256 16 1 每个数位上代表1的个数
 基数:16  进位规律
 数字:0 1 2 3 4 5 6 7 8 9 a b c d e f
 权是基数的n次幂
    
    141(16) = 1*256 + 4*16 + 1 = 321(10)
   
  10    16           2
   0    00   0000 0000
   1    01   0000 0001
   2    02   0000 0010
   3    03   0000 0011
   4    04   0000 0100
   5    05   0000 0101
   6    06   0000 0110
   7    07   0000 0111
   8    08   0000 1000
   9    09   0000 1001
  10    0a   0000 1010
  11    0b   0000 1011
  12    0c   0000 1100
  13    0d   0000 1101
  14    0e   0000 1110
  15    0f   0000 1111
  16    10   0001 0000
  17    11   0001 0001
  18    12   0001 0010
  ...
  65    41   0100 0001
  66    42   0100 0010
  ...  
 192    c0   1100 0000
 193    c1   1100 0001
 ...
 255    ff   1111 1111

4.补码的概念

补码:为了成本考虑,解决负数问题,利用大数作为负数使用。(在计算机系统中,数值一律用补码来表示和存储)

一种算法规定:以4位补码为例。
 4位补码规定:
 1)高位为1的数作为负数使用
 2)计算时候如果超过4位,自动溢出舍弃
 3) 补码是有范围的数:-8 ~ 7 不能表示超范围数字
 4)在不超过范围情况下,补码满足数学运算,避免进行溢出计算
 5)补码有对称现象, 不是数学现象!
 “~” 取反运算,就是翻转0 1

~0=-1, ~1=-2, ~2=-3 ...  ~n = -(n+1)
   => ~n = -(n+1)
   => ~n = -n -1
   => 1+~n = -n (大学讲的补码公式!)
  
   根据 1+~n = -n 可以快速,计算负数补码(即一个负数的补码是其取绝对值后(正数)的补码(其本身)求反码后加1)正数的补码是其本身
   6 的补码 0110 => 取反 1001 => 加1 1010

10   2
 -8 1000
 -7 1001
 -6 1010
 -5 1011
 -4 1100
 -3 1101
 -2 1110 + 1 = 1111  数学上 ?+ 1 = -1
 -1 1111 + 1 = 0000  数学上 ?+ 1 = 0
  0 0000
  1 0001              
  2 0010         -3 + -3 = ?
  3 0011         
  4 0100          -3  1101
  5 0101          -3  1101
  6 0110        +    11 1 
  7 0111        -------------
                  -6  1010    
 
 补码的高位数推广, 推广范围
  10 4补  8位补码(byte) 32位(int)
min  --- ---------  10000000 00000000 00000000 00000000
min -1              10000000 00000000 00000000 00000001
....                ....
-129      --------  11111111 11111111 11111111 01111111
-128      10000000  11111111 11111111 11111111 10000000
-127      10000001  11111111 11111111 11111111 10000001
-126      10000010
....                ....
-10 ----  11110110
 -9 ----  11110111 
 -8 1000  11111000
 -7 1001  11111001
 -6 1010  11111010
 -5 1011  11111011
 -4 1100  11111100
 -3 1101  11111101
 -2 1110  11111110
 -1 1111  11111111  11111111 11111111 11111111 11111111
  0 0000  00000000  00000000 00000000 00000000 00000000
  1 0001  00000001  00000000 00000000 00000000 00000001             
  2 0010  00000010
  3 0011  00000011       
  4 0100  00000100      
  5 0101  00000101     
  6 0110  00000110 
  7 0111  00000111
  8 ----  00001000
  9 ----  00001001
 10 ----  00001010
 ...----  ...
126 ----  01111110
127 ----  01111111   00000000 00000000 00000000 01111111
128 ---- ---------   00000000 00000000 00000000 10000000
...
                     01111111 11111111 11111111 11111110
max       --------   01111111 11111111 11111111 11111111
       
5.关于Java的补码        
 1)Java 中数是补码,补码有正数也有负数
    (负数高位为1,正数高位是0,高位也称为符号位)
 2) Java采用补码计算,注意计算范围,避免超范围计算,避免溢出
 3)记住关键数字: -1  0  max  min 的补码
 int  重要推论: max+1=min
  -1 : 11111111 11111111 11111111 11111111  (常用数字)
  0  :00000000 00000000 00000000 00000000
  min: 10000000 00000000 00000000 00000000
  max: 01111111 11111111 11111111 11111111
 
 4)记住推论 :-n = ~n+1  =>  -n-1 = ~n
   System.out.println(~-6); // ~-6 = -(-6)-1 = 5
 5) 16进制,是2进制的简写形式。
    是2进制每4位对应一位的简写。
    本质上16进制就是2进制
   
 -1 : 11111111 11111111 11111111 11111111  (常用数字)
         f   f    f   f    f   f    f   f
  0  :00000000 00000000 00000000 00000000
          0   0    0   0    0   0    0   0             
  min: 10000000 00000000 00000000 00000000
          8   0    0   0    0   0    0   0
  max: 01111111 11111111 11111111 11111111
          7   f    f   f    f   f    f   f
   
 6.java运算符

> < >= <= == !=
  && || !   & | 

位运算符:

(1)数学上的移动

>>:右移,移的是二进制形式,(非负数时)前面的空位补0;负数时,前面的空位补1;右移一次相当于除以2

<<:左移,无论正数、负数、0,后面的通通补0;左移一次相当于乘以2

(2)无符号右移:

>>>:逻辑右移,前边的空位一律补0

条件运算符:表达式?a:b              (前面的表达式为真时,整个结果为a,否则为b)

这里要强调的是:

(1)+是java中唯一的一个重载的运算符,既可以作为数学上的加法,又是作为字符串的连接使用

(2)&& || 的短路问题:例如if(a && b) 若a为假,则不再判断b的真假即可判定 a && b为假 ;同理 if (a || b) 若a为真,则整个表达式为真,不再判定b的真假

穿插小demo:

判断闰年:

 import java.util.Scanner;
 /**
  * 闰年规定
  * 注:闰年的判断公式为:
  * 1.年份能被4整除,且不能被100整除的是闰年。
  * 2.年份能被400整除的是闰年。
  * 总结:四年一润,百年不润,四百年再闰
  */
 public class LeapYear {
     public static void main(String[] args) {
         Scanner in = new Scanner(System.in);
         int year;
         System.out.print("输入年份:");
         year = in.nextInt();//2000
         if( (year%4==0 && !(year%100==0)) || (year%400==0)){
               System.out.println(year+"是闰年");
         }
     }
 }

重拾java系列一java基础(1)的更多相关文章

  1. 【java系列】java开发环境搭建

    描述 本篇文章主要讲解基于windows 10系统搭建java开发环境,主要内容包括如下: (1)安装资料准备 (2)安装过程讲解 (3)测试是否安装成功 (4)Hello Word测试 1   安装 ...

  2. 重拾java系列一java基础(2)

    1.分支流程控制 if(布尔表达式/分支条件){  //语句块} if(布尔表达式/分支条件){  //语句块1}else{  //语句块2} if(条件1){  //语句块1}else if(条件2 ...

  3. 重拾java系列一java基础(3)

    这一章主要复习下以前所接触的算法, (1)选择排序法:在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较 ...

  4. 重拾java系列一java基础(4)

    本章主要回顾一些类的相关知识: (1)static: static 静态的: 属于类的资源, 使用类名访问.  静态属性: 只有一份的变量  静态方法: 是属于类方法, 可以使用类名直接访问. 静态方 ...

  5. java系列(1/4)基础阶段-MySQL(2/13)

    本单元目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停 ...

  6. Java系列: JAVA字符串格式化-String.format()的使用(zz)

    常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重 ...

  7. 重拾Java Web应用的基础体系结构

    目录 一.背景 二.Web应用 2.1 HTML 2.2 HTTP 2.3 URL 2.4 Servlet 2.4.1 编写第一个Servlet程序 2.5 JSP 2.6 容器 2.7 URL映射到 ...

  8. 夯实Java基础系列5:Java文件和Java包结构

    目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java ...

  9. 【Java】 重拾Java入门

    [概论与基本语法] 取这个标题,还是感觉有些大言不惭.之前大三的时候自学过一些基本的java知识,大概到了能独立写一个GUI出来的水平把,不过后来随着有了其他目标,就把这块放下了.之后常年没有用,早就 ...

随机推荐

  1. webpages框架中使用Html.TextArea()在前台显示多行信息时,如何进行大小、样式的设置

    环境:vs2015 webpages框架+razor语法: 目的:服务器进行数据更新操作后,在前台显示更新的相关信息: 后台代码:将更新条数等相关信息存储在一个变量中: @{ var serverIn ...

  2. 客户端ARPG角色行为模型

    [概述] 对于玩家自身而言, 场景中的角色分两种:自己,别的生物(包括别的玩家,monster, npc等).而生物本身是一个集合{属性数据(状态), 行为(动作表现)}. 站在玩家自身的角度来看, ...

  3. CSS3的颜色透明度 ajax请求时loading

    1.background-color:rgba(0,0,0,0.65)         这行代码让覆盖层变黑色,且有0.6的透明度 正常情况下遮盖层会把透明度遗传给弹出框(它的子元素),但是利用CSS ...

  4. 资源 之 4.2 内置Resource实现(拾)

    4.2  内置Resource实现 4.2.1  ByteArrayResource ByteArrayResource代表byte[]数组资源,对于"getInputStream" ...

  5. jmeter生成报告指示板

    JMeter支持仪表板图表和报告生成 数据从一个测试计划. 这一章描述了如何配置和使用生成器. 概述 JMeter的仪表板生成器是一个模块化的扩展. 它的缺省行为是读取和处理样本 CSV文件生成HTM ...

  6. JavaScript:闭包

    根据MDN上的解释『闭包是指函数有自由独立的变量.换句话说,定义在闭包中的函数可以“记忆”它创建时候的环境.』 闭包有两个主要的作用: 1.访问内部函数的局域变量: 2.将创建的变量永久保存在内存中, ...

  7. postgresql 索引

    1.B-tree索引 create index idx_contacts_name on contacts(name); 2.数组索引 create index idx_contacts_phone  ...

  8. 数据库索引<一> 索引结构表结构

    有很长时间没有更新博客了,再过几天都2月分了,如果再不更新一篇,我1月分都没有更新,保持连续,今天更新一篇. 最近没有什么看技术方面的东西,游戏,画画搞这些去了.我发现我每年一到年底就是搞这些东西,其 ...

  9. I-MooFest(POJ 1990)

    MooFest Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5697   Accepted: 2481 Descripti ...

  10. 《Play for Java》学习笔记(三)template+Message

    说明: 这是本书的第八章内容,由于项目需要,提到前面来看啦~~~O(∩_∩)O 一.模板template的定义 Play中的模板是html代码和Scala代码的混合而成的,其中Scala代码以@开头, ...