`
Luob.
  • 浏览: 1570896 次
  • 来自: 上海
社区版块
存档分类
最新评论

java之2天运算符,进制转换,流程控制

    博客分类:
  • Java
阅读更多
java的语言的基础组成
1.关键字:  被java赋予了特殊意义的单词
2.标识符:  类名  函数   26个字母  0-9   _ $ ,不能数字开头 不使用关键字
           包名: 全小写
           类名 接口名: XxxYxxZzzz 所有单词首字母大写
           变量和函数名:   xxxYyyZzzz: 第一个单词首字母小写,其余单词首字母大写
           常量名: XXX_YYY_ZZZ 所有字母都大写.多单词每个单词用"_" 连接

3.注释  :  单行, 多行, 文档 , 不能嵌套注释

4.常量和变量:

5.运算符
6.语句
7.函数
8.数组


常量
整数的表示方式
 十进制:0-9,
 八进制 0-7 用0 开头,
 十六进制:0-9 A-F 用0x开头,
 二进制 1 和0
             小数点
             布尔类型常量 
             字符常量  
             字符串常量
             null常量

    1.  一个字节用 8个二进制位 表示 可以用 8个开关 表示 
    2.  8进制是   3个二进制表示一位 (3个二进制的最大数是 7)
    3.  16进制是  4个二进制表示一位 (4个二进制的最大数是 15) 
    4.  8位的二进制的最大值 就是  255 ,可以想到 IP地址中 最大数就是 255,说明ip使用字节表示的 .  

   Interge.toBinaryString(-6);    \\java中将二进制 转换成 十进制的方法
   Interge.toBinaryString(6);








变量
变量:就是将不确定数据进行存储,也就在内存中开辟一个存储空间.
有明确的数据类型, 变量名, 数据 来完成


数据类型

数据类型:  基本数据类型  引用数据类型
 
基本数据类型 : 数值型     整数类型byte(8位二进制-128~127) short(16二进制32767) int(32位二进制65535) long(64位二进制)          浮点类型(float(32位进制),double (64二进制)

               字符型  char (0-32767)   16位 
               布尔型  boolean

引用数据类型 :  类     class   
                接口   interface
                数组   [] 



类型转换
1.自动类型提升,将两个不同类型数值运算 提升为同一种类型 然后再进行运算.
2.强制类型转换,有风险,可能会损失精度. 一般用于保留整数部分
3.float和int进行运算的时候 结果为 float 类型





运算符
1.算术运算符 : + - * /  %   ++  --  
2.赋值运算符
3.比较运算符
4.逻辑运算符
5.位运算符
6.三元运算符


代码1
//注意整型元算时候  小数点后面的都会舍弃
public static void main(String [] args){
   int x=4272;
   x=x/1000*1000;   //4270/1000=4.27-->int x=4  -->*1000--->int x=4000
   System.out.println(x);    //   4000  
}

取模
左边小于右边    结果 为左边
左边=右边       结果 为 0
右边为 1        结果 为 0 

出现 负数  只看 左边
1 % -5          结果 为  1
-1 % 5          结果 为 -1

public static void main(String[] args){
int a=3,b;
b=a++;   --->  b=3  a=4
b=++a;   --->  b=a=4
//  ++ 在前        先加
// ++ 在后        后加

System.out.println("5+5="+5+5);   // 5+5=55 (不是五十五) 是 五五
System.out.println("5+5="+(5+5));   // 5+5=10 
}



转义字符 \
转移字符:通过 \ 来转变后面字符或者符号的意义
\n: 换行
\b:退格 相当于 backspace
\r:按下回车键.window系统中回车符是由连个字符来表示\r\n  在linux DOS下面是使用 \r 表示
\t: 制表符.相当于tab键
System.out.println("hello \n world");

System.out.println("\"hello\"");
System.out.println("\\hello\\");



赋值运算符  
public static void main(String[] args) {
//   +=  -= *= /= %=  前面都是一个运算符 不是两个运算符
int x=3;
x+=4;  ==>  x=x+4;  

short s=4;
s=s+5;   // 先将 x自动类型提升 为 int 然后  =5 等于  9  然后 int 9  赋值给 short s  丢失精度 编译失败 ,需要强制类型转换

s+=5;   //编译通过  会自动完成强制类型转换 所以就通过了. 

int a,b,c;
a=b=c=5;  //编译通过

}


比较运算符 只可能是  true  和false
//   != > < >= <= == instanceof 

public static void main(String[] args) {
  System.out.println("hello" instanceof String);
}


逻辑运算符
&    and
|    or 
^   异或
!   not  非
&&  and (短路) 
||  or (短路)

public static void main(String[] args) {

//短路 案例
        int x=4;  
        System.out.println(x>4 && x++<5);
	System.out.println(x);     // 4
	System.out.println(x>4 & x++<5);
	System.out.println(x);     //5


/*  &  &&  和  |  ||
&  : 无论左边 是true 还是 false  右边都运算
&& : 当左边为false时, 右边不运算

|  : 两边都运算
|| : 左边为false 的时候 , 右边不运算
*/


/* & 与
true & true   =true;
true & false  = false
false & true  = false
false &  false =false
只要有一个false  结果就是false
两边都为 true 的时候  才为 true
*/

/*  |  或
true | true =true
true | false  =true
false | true =true
false | false =false

只要有个 true  结果为 true
都为 false 的时候就为 false
*/

/* ^ 异或
true ^ true =false
true ^ false =true
false ^ true =true
false ^ false= false
两边结果相同 为 false
两边结果不同 为  true
*/

/*  !
 !true =false;
!!true=true;
!!!true=false;
*/


}



位运算符号
// <<左移动  >>右移  >>>无符号右移  &与  |或   ^异或  ~反码

         3<<2   
 二进制  11
         1100  ==>  12
         
         6>>2    ==>  6/ 2*2=1
         110
         1  = 1

         6>>1=3  ==>  6/ 2=3

       3<<2 =12    3<<3=24
       3*2*2=12    3*2*2*2 =24  

  左移动    <<      就是 * 2的n位次幂    右边 补 0 
  右移动    >>      就是  / 2 的n位次幂  移动后 高位 补什么由原高位值定


  >>   移动后 高位 补什么由原高位值定
  >>>  不管 是负数还是正数  高位 都用 0 补 

// &: 与

6 & 3= 2

  110    0 是假  1 是真
& 011
-----
  010  ==>   假真假  ==>2

一个数 与 自己 等于自己
6 & 6 = 6
//  |: 或

6 | 5 =7

   110
|  101
-------
   111  ==>真真真  ==> 7

一个数 或 自己 等于 自己
6 | 6 = 6




//异或 ^
// ^ 异或
6 ^ 5 ==  3

   110       0 假  1 真
^  101
-------
   011  ==> 假真真 ==> 3


异或: 一个数 异或一个数两次 结果还是 那个数.
      一个数 异或 自己 = 0
      6^6=0 


// ~ 取反
//  ~ 反码 规律 N = -N-1
一个数取反 = 这个数的相反数 -1  

   ~6 =  -7

    0000...  0110
~   1111...  1001      -->取反      -7   
    0000.....0001      -->减1
    1111.....1000            
    0000.....0111     --> 取反     ==>7  

  -6 == 6的二进制取反 + 1 ==> 6的取反 =  -6 -1 =-7
  A  =  B  +  C           ==> B    =   A-C
  
  
  ~ 9 来试试  是不是 = -9 -1  =-10 

     0000 .... 1001
取反 1111 .....0110   A:一个负数不好算 就算他的正数取反数B  所以减一
-    0000 .... 0001
-------------------
     1111 .... 0101      B的取反   去掉反  ==> B
     0000 .....1010      B=10   ===>  A=-10 =10取反+1


//求负数的 二进制
  -6= 6的取反+1;

  6取反= -6-1;



问题1. 2 乘以  8 的最有效运算 就是  2<<3  =2*2(3)= 2*8=16  
问题2: 两个数的 互换 

public static void main(String [] args){   
int n=3,m=8;
方法一: 使用中间变量 temp  

方法二:   两个数比较大的时候 容易丢失精度
    n=n+m;
    m=n-m;
    n=n-m;


方法三: 技巧性方式没有丢失精度
   n=n^m;
   m=n^m;   // (n^m)^m = n
   n=n^m;   // (n^m)(n^m)^m = m
}


位移运算的巧用 求一个数的16进制位数

注意下使用  >>> 才对 不是  >>


流程控制语句
1.判断结构
2.选择结构
3.循环结构


if 和三元运算符 的比较
public static void main(String [] args0){

int a=3;
if(a>2)
   System.out.println("a");
if(a>3)
  System.out.println("b");

int x=2,b;

b=(x>3)? 100:200; 

b=(x>1)? System.out.println("a"):200;  这样就不行 


/*
if esle 的简写格式为: 变量= (条件表达式) ? 表达式1: 表达式2;

三元运算符:
  好处: 可以简化if else 代码
 qu  弊端:  因为是一个运算符,所以运算完后必须有一个结果.


*/

}



switch的使用
switch 在  5.0 的时候 增加了对枚举类型的判断
在  7.0 的时候增加了对字符串类型的判断
public static void main(String[] args){
  int x=3;

  switch(x){  //byte short int char
      default:  
           System.out.println("d");           // 4 
      case 2:
           System.out.println("a");   // 1 判断        5 不判断
      case 4:
           System.out.println("b");  // 2 判断        6  不判断 -->  跳出 
           break;
      case 6:
           System.out.println("c");  // 3 判断
           break;

    //结果  d  a  b   
    //当某一次匹配成功,而没有遇到"break" 的时候,接下来,程序 不会判断剩下的case 而是直接运行下面的可以执行语句,直到遇到 break 或者 switch 结尾 "}"
    //default 总是最后执行的,提前是没有遇到break;
    //如果运行到default后,但是 default里没有break,那么程序还会一直往下运行,知道遇到break; 或者 "}" 结束判断
 
  }

  switch(x){
       case 3:
       case 4:
       case 5:
              System.out.println("春季");
       case 6:
       case 7:
       case 8:
              System.out.println("夏季");
       case 9:
       case 10
       case 11:
              System.out.println("秋季");
       case 12:
       case 1:
       case 2:
              System.out.println("冬季");
       default:
            System.out.println("you are so best!"); 

  }

/*
 if 和switch 很像

 具体什么场景下,应用那个语句呢?
 如果判断的具体数值不多,而是符合  byte short int char 这四种类型 
 虽然 两个语句都可以使用, 建议使用switch 语句  ,因为 效率稍高 
  
 其他情况,对区间判断,对结果为 boolean 类型判断 ,使用 if ,if使用范围更广

*/

}

6
1
分享到:
评论

相关推荐

    Java范例开发大全(全书源程序)

    第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑运算符 14 实例8 位运算符 15 实例...

    Java JDK实例宝典

    第1章 Java基础 1.1 转换基本数据类型 1.2 Java的运算符 1.3 控制程序的流程 1.4 计算阶乘 1.5 实现命令行程序 第2章 Java面向对象程序设计 2. 1 复数类 2. 2 equals.chashCode...

    java范例开发大全源代码

     第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5 算术运算符 12  实例6...

    Java范例开发大全 (源程序)

     第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5 算术运算符 12  实例6 关系...

    java范例开发大全

    第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...

    java范例开发大全(pdf&源码)

    第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例094 整数进制转换器 115 实例095 查看数字的取值范围 116 实例096 ASCII编码查看器 117 实例097 Double类型的比较 118 5.4 面向对象的特征 119 实例098 经理与员工的差异 119 实例099 重写父类中的方法 121 实例...

    freemarker总结

    这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;... &lt;#else&gt; ... 例子如下: (age&gt;60)&gt;老年人 ...

    FreeMark学习笔记

    2,直接使用连接运算符+来连接字符串 例如有如下数据模型: Map root = new HashMap(); root.put("user","annlee"); 下面将user变量和常量连接起来: ${"hello, ${user}!"} //使用第一种语法来连接 ${"hello, " + user...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,...

Global site tag (gtag.js) - Google Analytics