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

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
分享到:
评论

相关推荐

    【IT十八掌徐培成】Java基础第02天-04.运算符-移位运算-逻辑运算.zip

    例如,`5 &lt;&lt; 2`的结果是20,因为5的二进制形式是0101,左移两位后变为10100,转换为十进制即为20。右移运算符则相反,将二进制数的所有位向右移动,左边的空位根据数据类型(有符号或无符号)可能被填充为0或符号位...

    Java基础学习第二天

    在Java基础学习的第二天,主要涵盖了以下几个重要知识点:计算机组成原理,DOS命令,进制转换,Java的发展历程,Java的三大平台,Java运行核心机制,JDK的安装与环境变量配置,以及Java的基本语法。 首先,计算机...

    java基础学习02天笔记

    这份Java基础学习笔记深入浅出地介绍了Java编程中的核心概念,包括标识符规则、注释使用、数据类型理解、变量管理、运算符操作及进制转换技巧。通过详细讲解与实例演示,帮助初学者构建坚实的编程基础,掌握基本的...

    JavaSE第二天笔记

    - 常量与进制转换是理解数据存储方式的关键,掌握不同进制之间的转换方法对于处理数字非常重要。 - 数据类型的选择与变量的声明直接影响程序的性能和效率,正确使用运算符能够使程序更加高效和简洁。

    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...

    计算器 获取系统时间

    在IT领域,计算器应用是日常计算任务的基本工具,尤其对于程序员和计算机科学爱好者而言,一个功能强大的计算器不仅可以处理基本的算术运算,还能提供高级功能,如开方、平方、求阶乘以及进制转换。此外,能够获取...

    java代码-日常练习8,位运算符###

    在Java编程语言中,位运算符是用于操作二进制位的特殊运算符。它们直接在整数类型的底层二进制表示上工作,提供了一种高效处理数据的方式。本实践练习主要关注Java中的位运算符及其应用。我们将通过分析`main.java`...

    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 解惑 又一部java经典书

    这是因为计算机内部使用二进制形式存储数值,而有些十进制小数无法精确表示为二进制形式,导致计算过程中出现精度误差。 #### 解决方案 为了解决浮点数的精度问题,可以采取以下几种方式之一: - **使用字符串...

    Java解惑 PPT1

    在Java编程中,了解语言的细微之处至关重要,因为这可能会导致意想不到的行为。本PPT主要涵盖了五个有趣的Java谜题,帮助开发者理解Java的一些核心概念。 **谜题1:奇数判断** 在Java中,判断一个整数是否为奇数,...

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

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

    C入门神作笔记七天C语言入门笔记.pdf

    学习C语言的目标是掌握基本编程知识,包括数据类型、运算符和表达式、流程控制、函数、数组、指针、变量的作用域和存储方式、扩展数据类型以及专题如补码、字符串处理、进制转换和动态内存分配等。掌握基本语法规则...

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

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

Global site tag (gtag.js) - Google Analytics