三【 java基础语法 】进制和运算符

Java基础语法之变量、运算符、流程控制、数组方法等基础语法 变量、运算符、流程控制、数组方法等基础语法Java程序的执行流程,符合Java语法规则的程序。 1.1.1.Java初识 对Java进行简单介绍,Java程序如何执行,以及Java程序的结构。 Java简介,JDK(JAVA开发工具包)=开发工具集(javac编译器工具、java命令解释执行等组件)+JRE(JAVA运行时环境)=开发工具集+JRE(JVM+Java标准类库),开发程序必须使用JDK,运行开发完成的程序只需JRE,JVM(JAVA虚拟机)是JAVA平台无关性(LINUX、WINDOWS等 阅读详情

01 关于进制

 

所有数字在计算机底层都以二进制形式存在 。

  • 对于整数,有四种表示方式:
    • 二进制  0,1 ,满 2 进 1. 以 0b 或 0B 开头。
    • 十进制 0-9 ,满 10 进 1 。
    • 八进制 0-7 ,满 8 进 1. 以数字 0 开头 表示。
    • 十六进制  0-9 及 A-F ,满 16 进 1. 以 0x 或 0X 开头 表示。此处的 A F 不区分大小写。
    • 如:0x21AF +1= 0X21B0

     

class BinaryTest{
    public static void main(String[] args){

        int num1 = 0b110;
        int num2 = 110;
        int num3 = 0127;
        int num4 = 0x110A;

        System.out.println("num1 = " + num1);
        System.out.println("num2 = " + num2);
        System.out.println("num3 = " + num3);
        System.out.println("num4 = " + num4);
    }
}

 1.1二进制转十进制

  • 二进制的整数有如下三种形式:
    • 原码 :直接将一个数值换成二进制数。最高位是符号位
    • 负数的反码 :是对原码按位取反,只是最高位(符号位)确定为 1 。
    • 负数的补码 :其反码加 1 。

  •  计算机以二进制 补码 的形式保存所有的整数。
    • 正数的原码、反码、补码都相同
    • 负数的补码是其反码 +1

1.2 进制转化

  • 二进制转成十进制乘以2的幂数
  • 十进制转成二进制除以2取余数的逆
  • 八进制转二进制:三个一位
  • 十六进制转二进制:四个一位

 02 运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

  • 算术运算符
  • 赋值运算符
  • 比较运算符(关系运算符)
  • 逻辑运算符
  • 位运算符
  • 三元运算符

2.1 算数运算符

/*
1:算数运算符
+ - * / -- ++

 */

public class SignTest {
    public static void main(String[] args){
        // 除号: /
        int num1 = 12;
        int num2 = 5;
        int result1 = num1 / num2;
        System.out.println(result1); // 2

        int result2 = num1 / num2 * num2;
        System.out.println(result2); //10

        double result3 = num1 / num2;
        System.out.println(result3); // 2.0

        double result4 = num1 / (num2 + 0.0); //2.4
        double result5 = (double)num1 / num2; //2.4
        System.out.println(result4);
        System.out.println(result5);

        // 取余运算
        // 符号与被除数相同
        int m1 = 12;
        int n1 = 5;
        System.out.println("m1 % n1 = " + m1 % n1); // 2

        int m2 = -12;
        int n2 = 5;
        System.out.println("m2 % n2 = " + m2 % n2);// -2

        int m3 = 12;
        int n3 = -5;
        System.out.println("m3 % n3 = " + m3 % n3);// 2

        int m4 = -12;
        int n4 = -5;
        System.out.println("m4 % n4 = " + m4 % n4);// -2

        // (前)++ 先自增运算,后进行其他运算
        // (后)++ 先进行运算,后自增运算
        int a1 = 10;
        int b1 = ++a1;
        System.out.println("a1 =  " + a1 + ", b1 = " + b1); // 11 11

        int a2 = 10;
        int b2 = a2++;
        System.out.println("a2 =  " + a2 + ", b2 = " + b2);// 11 10
    }
}

算数运算符要注意的问题

  • 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
  • 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:intx=3510;x=x/1000*1000; x的结果是? 3000
  • “+”除字符串相加功能外,还能把非字符串转换成字符串.例如:System.out.println(“5+5=”+5+5); //打印结果是?5+5=55 ?
/*
练习:随意给出一个三位数的整数,打印显是它的个位数,十位数,百位数的值。
格式如下:
数字xxx的情况如下:
个位数:
十位数:
百位数:

例如:
数字153的情况如下:
个位数:3
十位数:5
百位数:1

*/
class AriExer{
	public static void main(String[] args){
		int num = 187;
		System.out.println("百位数:" + num/100);
		System.out.println("十位数:" + num%100/10);
		System.out.println("个位数:" + num%10);
	}
}

2.2 赋值运算符

  • 符号: =
    • 当 ““=”两侧数据类型不一致时 可以使用 自动类型转换或使用强制类型转换原则进行处理
    • 支持连续赋值 。
  • 扩展赋值运算符: :+=, --=, *=, /=,
  • 赋值运算符不会改变变量本身数据类型
/*
运算符之二:赋值运算符
+= -= *= /=

*/
class SetValueTest{
    public static void main(String[] args) {
        //赋值符号:=
        int i1 = 10;
        int j1 = 10;

        int i2,j2;
        //连续赋值
        i2 = j2 = 10;

        int i3 = 10,j3 = 20;

        //***********************
        int num1 = 10;
        num1 += 2;	//num1 = num1 + 2;
        System.out.println(num1);	//12

        int num2 = 12;
        num2 %= 5;	//num2 = num2 % 5;
        System.out.println(num2); // 2

        short s1 = 10;
        //s1 = s1 + 2;	//编译失败
        s1 += 2;	//结论:不会改变变量本身的数据类型
        System.out.println(s1); //12

    }
}
  •  开发中,如果希望变量实现+2的操作,有几种方法???(int num = 10)
    • 方式一:num = num + 2;
    • 方式二:num += 2;(推荐)
  • 开发中,如果希望变量实现+1的操作,有几种方法???(int num = 10)
    • 方式一:num = num + 1;
    • 方式二:num += 1;
    • 方式三:num++;(推荐)
class MkFan{
	public static void main(String[] args) {
		//练习1:
		int i = 1;
		i *= 0.1;
		System.out.println(i);// 0
		i++;
		System.out.println(i);//1

		//练习2:
		int m = 2;
		int n1 = 3;
		n1 *= m++; 
		System.out.println("m=" + m);	//3
		System.out.println("n1=" + n1);	//6

		//练习3:
		int n = 10;
		n += (n++) + (++n);
		System.out.println(n);	//32
	}
}

2.3 比较运算符

/*
运算符之三:比较运算符
==  !=  > < >= <= instanceof

结论:
1.比较运算符的结果是boolean类型
2.区分 == 和 =

*/
class CompareTest{
    public static void main(String[] args){
        int i = 10;
        int j = 20;
        System.out.println(i==j);	//false
        System.out.println(i = j);	//20 先赋值再输出i

        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b2 == b1);	//false
        System.out.println(b2 = b1);	//true b1 赋值给b2 之后输出b2
    }
}

 2.4 逻辑运算符

  • &—逻辑与
  • |—逻辑或
  • —逻辑非
  • && —短路与
  • ||—短路或
  • ^ —逻辑异或

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&的区别:

我们将 || 和 && 定义为逻辑运算符,而 | 和 & 定义为位运算符

  • 单&时,左边无论真假,右边都进行运算;
  • &&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。【进行短路计算】
  • “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
  • 异或(^)与或( | )的不同之处是:当左右都为true时,结果为false。理解:异或,追求的是“异”

开发中对布尔变量推荐使用&& 和 ||

/*
逻辑运算符操作布尔类型变量
& && | || ! ^


 */

public class LogicTest {
    public static void main(String[] args){
        boolean b1 = true;
        int num1 = 10;
        if (b1 & (num1++ > 0)){
            System.out.println("我现在再北京");
        }else{
            System.out.println("我在南京");
        }
        System.out.println("num = " + num1); // 11 

        boolean b2 = false;
        int num2 = 10;
        if (b2 && (num2++ > 0)){
            System.out.println("我现在再北京");
        }else{
            System.out.println("我在南京");
        }
        System.out.println("num = " + num2); // 10 左边为假,不再进行右侧运算
    }
}

 运算符面试题:

class LogoinTest{
	public static void main(String[] args){
		boolean x = true;
		boolean y = false;
		short z = 42;
		//if(y == true)
		if((z++==42)&&(y=true))z++;  // 这里y= true 是赋值运算符 所以条件成立 z = 44
		if((x=false)||(++z==45)) z++;
		System.out.println("z=" + z);	//46
	}
}

2.5 位运算符

位运算是直接对整数的二进制进行的运算

/*
位运算符
1: 操作均为整型数据
2:《《: 在一定范围内,每向左移一位,*2
》》: 在一定范围内,每向右移一位,/2
 */

public class BitTest {
    public static void main(String[] args){
        int i = 21;
        System.out.println("i << 2 = " + (i << 2)); // 84 这里要加括号,否则会编译不通过
        System.out.println("i << 26 = " + (i << 26));
        System.out.println("i << 27 = " + (i << 27)); // 一共32位,左移太多会溢出
    }
}

位运算 与 或 异或 进行二进制计算 

需求: 交换两个变量的值

class BitTest{
	public static void main(String[] args){
		//练习:交换两个变量的值
		int num1 = 10;
		int num2 = 20;

		//方式一: 定义临时变量
	//	int tent = num1;
	//	num1 = num2;
	//	num2 = tent;

		//方式二:
		//好处:不用定义临时变量
		//弊端:①相加可能超出存储范围 ② 有局限性:只适用于数值类型
//		num1 = num1 + num2;
//		num2 = num1 - num2;
//		num1 = num1 - num2;

		//方式三:使用位运算 异或
		num1 = num1 ^ num2;
		num2 = num1 ^ num2;
		num1 = num1 ^ num2;

		System.out.println("num1 = " + num1 + ",num2 = " + num2);
	}
}

 k = m^n; k^m = n; k ^n = m 异或运算

2.6 三元运算符

/*
(条件表达式)?表达式1:表达式2
1.条件表达式是布尔类型变量
如果条件为True 执行表达式1
否则执行表达式2
表达式1 和2 要求一致
三元运算符可以嵌套使用
 */
public class SanYuan {
    public static void main(String[] args) {
        // 获取两个数较大数
        int m = 12;
        int n = 12;
        int max = (m > n) ? m : n;
        System.out.println(max);

        // *********
        String maxStr = (m > n)? "m大" : ((m == n)? "m等于n" : "n大");
        System.out.println(maxStr);

        //*********获取三个数的最大值
        int n1 = 13;
        int n2 = 2;
        int n3 = 15;
        int max1 = (n1 > n2)? n1 : n2;
        int max2 = (max1 > n3)? max1 : n3;

        int max3 = (((n1 > n2)? n1 : n2)>n3)? ((n1 > n2)? n1 : n2): n3; //可读性太差 不能这么写
        System.out.println(max2);
        System.out.println(max3);
    }

}

2.7 运算符的优先级

  • 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
  • 只有单目运算符、三元运算符、赋值运算符是从右向左运算的

基于STM32+OV7670的图像采集系统(基础篇:ov7670介绍) 一、简单认识 先来看一下外观: OV7670,图像传感器,体积小,工作电压低,提供单片VGA摄像头影像处理器的所有功能。通过SCCB总线控制,可以输入整帧、子采样、取窗口等方式的各种分辨率8位影像数据。 其他介绍比较繁琐,这里就不一一赘述了,我们只需要知道它是通过SCCB总线控制的就行了。 带FIFO与不带FIFO 目前市场上购买的ov7670模块分为两种,一种是不带FIFO芯片、一种是带FIFO芯片的。 FIFO是什么:(First Input First Output)先入先出的意思, 阅读详情

相关推荐

VisionMaster 4.2.0安装

按照顺序安装。

XuXing_java的专栏 3241

JAVA计算器小程序(多进制计算、转换)

JAVA计算器小程序(多进制计算、转换) 包含 2进制 8进制 10进制 16进制数的计算,转换

〔002〕Java 基础语法、数据类型、进制转换、运算符

学习 java语法以及数据类型进制之间的转换,掌握运算符官方API的使用

国内某知名游戏公司小菜鸡工程师 1873

Java基本语法(不同进制的表示方法、算术运算符的使用)

Java基本语法进制,算术运算符

weixin_46550268的博客 1322

java进制运算符

一、二进制进制(binary)在数学数字电路中指以2为基数的记数系统 计算机的二进制中用 0表示正数 1表示负数 十六进制:有一个前缀0X或0x 八进制:前缀是0,最好不用,容易混淆 二进制:前缀是0b或0B 二进制最高位是符号位:0表示正数 1表示负数 正数的原码,反码,补码都是一样 负数的反码=它原码符号位不变,其他位取反(0—变—1 )( 1—变—0) 负数的补码=它的反码+1(加的是1的原码00000001) 0的反码,补码都是0 java没有无符号的数,

clyu的博客 6676

Java 进制转换与运算符操作归纳

进制、八进制、十六进制间转换以及二进制运算符总结(&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; | ^ ~ &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;am

u011035026的博客 428

Java学习笔记16:二进制运算符,防遗忘

&amp;gt; &amp;lt;&amp;lt; : 左移运算符,num &amp;lt;&amp;lt; 1,相当于num乘以2 低位补0 &amp;gt; &amp;gt;&amp;gt; : 右移运算符,num &amp;gt;&amp;gt; 1,相当于num除以2 高位补0 &amp;gt; &amp;gt;&amp;gt;&amp;gt; : 无符号右移,

qq_30242987的博客 366

Java 中关于进制的详解

前言: 所有数字在计算机底层都是以二进制形式存在。 对于整数,有四种表示方式: 二进制:0,1 满2进1 以0b或0B开头 十进制:0-9 满10进1 八进制:0-7 满8进1 以数字0开头表示 十六进制:0-9及A-F 满16进1,以0x或0X开头表示。此处的A-F不区分大小写。如 0x21AF+1=0X21B0 ......

路宇的博客 2725

Java基础知识学习笔记

初识Java 主要学习资料 狂神说java 7月5日大致了解了Java的发展基础语法 7月6日了解了面向对象的知识,对所有Java基础知识大致了解 7月7日归纳总结,结束Java基础模块的学习 Java背景 Java特性 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 Java大版本 JavaSE 标准版 JavaME 嵌入式开发 JavaEE E企业级开发 JDK、JRE、JVM JDK。 JRE java运行环境 JVM 虚拟机 hello

vickiww666的博客 303

JAVA基础1--基础语法

方法是一个用于执行某种任务的代码块,可以接受数据的输入并处理,然后返回结果。可以没有形参输入返回值。但如果不需要返回值,返回值类型一定要声明为void,并return不能有返回值,可以单独有个return来执行终止命令。修饰符 返回值类型 方法名(形参列表){方法代码;return;

m0_55801079的博客 542

JAVA】第一张_Java基础语法

这些基础语法要点是学习Java编程的基础,通过理解掌握它们,你将能够编写出结构良好、功能完善的Java程序,并为进一步学习应用更高级的特性打下坚实的基础。继续学习实践,你将逐渐成为一个优秀的Java开发者!

qq_52143611的博客 1623

Java基础——java的基本语法(变量、运算符、流程控制)

Java基础——java的基本语法1 Java基础知识图解 关键字 关键字的定义特点: 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中所有字母都为小写 保留字 Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标记符时要避免使用这些保留字 byValue、cast、future、 generic、 inner、 opera...

abelboy的博客 6983

java基础语法框架及运算符

Java基础语法是编程的基石,而运算符是处理数据逻辑的核心工具。直接操作二进制位(较少用,了解即可)。用于数值计算,返回数值结果。了解上述之后,可以点击。将右侧值赋给左侧变量。连接布尔表达式,返回。

2501_91241024的博客 880

Java基础语法

判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值:true或者false。在表达式中,哪个运算符先执行后执行是要看优先级的,例如 “*、/” 的优先级高于”+、-”。执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2。基本的赋值运算符:= (从右边往左看) 扩展的赋值运算符:+=、-=、*=、/=、%=在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。强制类型转换:强行将类型范围大的变量、数据赋值给类型范围小的变量。

weixin_72952570的博客 2102

Java 菜鸟入门 | 常用进制转换

Java 菜鸟入门系列,介绍常用的进制知识,并利用 Java 实现他们的相互转换!

村雨遥 2756

7、Java四种进制及位运算介绍

7、Java四种进制及位运算介绍 四种进制: 二进制:0,1 以0b或0B开头 十进制:0-9 八进制:0-7 以数字0开头 十六进制:0-9 及A(10)-F(15) ,以0x或0X开头,此处A-F不区分大小写 int n1 = 0b1010; int n2 = 1010; int n3 = 01010; int n4 = 0x1010; //输出10进制结果 System.out.println(n1);//10

ImBeen的博客 1386

Java中的进制(二进制、八进制、十进制十六进制

Java中的进制(二进制、八进制、十进制十六进制

weixin_61930152的博客 6339

Java中的四种进制表示形式

//进制: 二进制0b 八进制0 十进制 十六进制0x int a = 0b10; //表示的为二进制 int b = 010; //表示的为八进制 int c = 10; //表示的为十进制 int d = 0x10; //表示的为十六进制 System.out.println(a); //输出结果:2 System.out.println(b); //输出结...

Little_Sirius的博客 2237

JAVA基础——进制位运算

1、进制介绍八进制:数值前以0开头。十六进制:数值前以0x开头2、进制转换 公式:系数*基数的圈次幂 相加 系数:每一位上的数 基数:几进制就是几 权:从数值右侧,以0开始,逐个+1增加 2.十六进制转十进制 3.十进制手动转到任意进制 4.8421码/BCD码 5.计算器 6.代码转换:String s =Integer.toBinaryString(i: )

weixin_64310048的博客 1678

Java中各进制之间的表示

一个很小的点,在做题的时候被揪了出来 问  int i = 012; int j=034; int l=078; 在system.print.out()时为何值? 知识点:可以使用八进制、十六进制的类型:long, int, short, byte 八进制表示:以0作为前缀,数码有0,1,2,3,4,5,6,7,逢8进位     如:8(十进制)-->010(八进制) 十六进制

szcsun5的博客 2160

Vector Magic 1.18 for Mac破解版

最强位图转矢量软件, 解压文件, 运行SP_1.x.app, 点"close"关闭弹窗, 然后把Vector Magic.app文件拖到刚才程序中的放大镜图标上即可

上一篇: 二 Java基础语法 变量和数据类型
下一篇: 四 【java基础】 程序流程控制- 分支结构
DempseyLee
博客等级 码龄5年 2粉丝 45原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值