第三节:带你详解Java的操作符,控制流程以及数组
前言
大家好,给大家带来带你详解Java的操作符,控制流程以及数组
的概述,希望你们喜欢
操作符
算数操作符
一般的 +,-,*,/,还有两个自增 自减 ,以及一个取模 % 操作符。
这里的操作算法,一定要掌握 好强制类型转换和自动类型转换。
理解%取模
取模就是在数学中的求余,输出的结果就是余数的多少
//可以亲自试试效果,输出为1
public class Test {
public static void main(String[] args) {
int i = 3;
int j = 2;
int z = i % j;
System.out.println(z);
}
}
理解自增 自减
++ -- , i++ 等价于 i = i+1 ; i-- 等价于 i = i-1 ; i++ 的理解为 先取值,再运算; ++i 的理解为 先运算,再取值。
//示例代码理解
public class Test {
public static void main(String[] args) {
int i = 2;
System.out.println(i++); //先取值,再运算,那么打印的值,就是先取值,为i=2;
//如果再次打印i的值
System.out.println(i); //输出i=3;
}
}
//示例代码理解
public class Test {
public static void main(String[] args) {
int j = 2;
System.out.println(++j); //先运算,再取值,那么打印的值,就是先运算,++j,那么j=3,打印结果为3;
//如果再次打印i的值
System.out.println(j); //输出j=3;
}
}
关系操作符
- 关系操作符:> 大于 ; >= 大于或等于 ;< 小于 ;<= 小于或等于 ;== 是否相等 ;!= 是否不等
逻辑运算符
- 逻辑运算符:&为长路与, &&为短路与;| 为长路或,|| 为短路或;!为取反;^ 为异或
长路和短路的区别:
- 长路: 两侧,都会被运算
- 短路: 只要第一个是false,那么第二个就不进行运算(短路只要第一个通过,那么第二个就不进行运算)
什么是异或:
口诀:不同为true,相同为false
位操作符
遵循规则:0看做是false,1看做是true.
&:参与运算的两个数,若相应位数的值都为1,则该位结果值为1,否则为0。
(相同为1(前提两个都为1,没有0的情况),不同为0)
|:参与运算的两个数,若相应位数中,只要有一个1,结果就为1。
(有1为1,没1为0)
^:参与运算的两个数,若相应位数中,相同则结果为0,否则为1。
(相同为0(可以两个数为1,结果为0;可以两个数为0,结果为0),不同为1)
~ :表示把每个二进制位的“1”换成“0”,把“0”换成“1”。补充原码、补码、反码的一点知识:
1.正数的反码、补码都与原码一样
2.负数的反码、补码与原码不同。
左移 右移
public class Test {
public static void main(String[] args){
int i = 12;
System.out.println(i<<1); //代表乘2,结果为24
System.out.println(i>>1);//同理,举一反三,结果可得6
}
}
三元运算符
格式:表达式 ? 值1 : 值2
如果表达式为 true,那么结果返回值1;否则返回值2。
控制流程
if语句的格式:
if(表达式1){
表达式2;
}
if else 语句的格式:
if(表达式1){
表达式2;
}else{
表达式3;
}
switch语句格式:
switch (mon) {
case 1:
case 2:
case 3:
System.out.println(mon + "月是春天");
break;
case 4:
case 5:
case 6:
System.out.println(mon + "月是夏天");
break;
case 7:
case 8:
case 9:
System.out.println(mon + "月是秋天");
break;
case 10:
case 11:
case 12:
System.out.println(mon + "月是冬天");
break;
default:
System.out.println("一年有12个月");
}
while和do-while循环语句
while为true时,继续执行;do-while中条件为true时,继续执行,至少会执行一次。
for语句格式:
for(int i=0;i<10;i++){
表达式语句;
}
continue和break
- continue 为继续下一次循环
- break 为结束整个循环
数组
- 数组是具有相同类型数据的集合
声明一个数组int[] a
;创建数组的长度int[] a = new int[5]
;给数组赋值int[] a = new int[]{1,2,3,45,5};
或int[] a = {2,4,24,5,7,66,55,1,2,3,4};
数组的选择排序
//这种就是排序算法,比如有6个人,第一轮要进行5次比较
//第一轮
for(int index=1;index<arr.length;index++)
{
if(arr[0]>arr[index])
{
int temp = arr[0];
arr[0] = arr[index];
arr[index] = temp;
}
}
print(arr);
//第二轮
for(int index=2;index<arr.length;index++)
{
if(arr[1]>arr[index])
{
int temp = arr[1];
arr[1] = arr[index];
arr[index] = temp;
}
}
print(arr);
//第三轮
for(int index=3;index<arr.length;index++)
{
if(arr[2]>arr[index])
{
int temp = arr[2];
arr[2] = arr[index];
arr[index] = temp;
}
}
print(arr);
//第四轮
for(int index=4;index<arr.length;index++)
{
if(arr[3]>arr[index])
{
int temp = arr[3];
arr[3] = arr[index];
arr[index] = temp;
}
}
print(arr);
//第五轮
for(int index=5;index<arr.length;index++)
{
if(arr[4]>arr[index])
{
int temp = arr[4];
arr[3] = arr[index];
arr[index] = temp;
}
}
print(arr);
//第六轮没有,我们arr.length=6举例
//int index = 6;index<arr.length; false
public static void selectionSort(int[] arr)
{
for(int count=1;count<arr.length;count++)
{
for(int index=count;index<arr.length;index++)
{
if(arr[count-1]>arr[index])
{
int temp = arr[count-1];
arr[count-1] = arr[index];
arr[index] = temp;
}
}
}
数组的冒泡排序
public class Demo{
public static void main(String[] args){
int[] nums = { 3,1,7,5,8,9,23,45};
for(int i = 0; i< nums.length-1;i++){
for(int j = 0;j<nums.length-1-i;j++){
if(nums[j]>nums[j+1]){
int temp = nums[j];
nums[j] = nums [j+1];
nums[j+1] = temp;
}
}
for(int j = 0; j<nums.length;j++){
Systm.out.println(nums[j]);
}
}
数组的打印
//使用for
int[] i = { 2,3,4,5,6 };
for(int each : i){
System.out.println(each);
}
二维数组的表达
int a[][] = new int[][]{
{1,2,3},
{4,5,6},
{7,8,9}
};
总结
- 本文讲了带你详解Java的操作符,控制流程以及数组,如果您还有更好地理解,欢迎沟通
- 定位:分享
Android
&Java
知识点,有兴趣可以继续关注
第三节:带你详解Java的操作符,控制流程以及数组的更多相关文章
- 超全详解Java开发环境搭建
摘自:https://www.cnblogs.com/wangjiming/p/11278577.html 超全详解Java开发环境搭建 在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必 ...
- 详解Java GC的工作原理+Minor GC、FullGC
详解Java GC的工作原理+Minor GC.FullGC 引用地址:http://www.blogjava.net/ldwblog/archive/2013/07/24/401919.html J ...
- Protocol Buffer技术详解(Java实例)
Protocol Buffer技术详解(Java实例) 该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发 ...
- 详解Java中的clone方法
详解Java中的clone方法 参考:http://blog.csdn.net/zhangjg_blog/article/details/18369201/ 所谓的复制对象,首先要分配一个和源对象同样 ...
- java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的
本文将详解java中的异常和异常处理机制 异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常. Java异常的分类和类结构图 1.Java中的所 ...
- 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)
在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...
- Java 详解 JVM 工作原理和流程
Java 详解 JVM 工作原理和流程 作为一名Java使用者,掌握JVM的体系结构也是必须的.说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java ...
- 第十八节:详解Java抽象类和接口的区别
前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...
- MySQL5.6的4个自带库详解
MySQL5.6的4个自带库详解 1.information_schema详细介绍: information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数 ...
随机推荐
- 如何修改PCB后更新到原理图(以AD为例)
实际绘图过程中会有多种情况发生,例如根据以前的项目做修改应用于新的项目.只有PCB没有原理图....... 如何通过修改PCB后更新到原理图(主要在PCB中增加元器件以及添加网络标号进行连线后更新到原 ...
- lombok的简单介绍
##lombok的使用 一直在使用lombok的set和get,对其他的功能用的比较少,蓦然发现这个库好用的功能不要太多啊 有必要深入理解一番. ###lombok安装 1 需要IDE支持,不然开发的 ...
- HDU 1520.Anniversary party 基础的树形dp
Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- CAS SSO单点登录框架学习
1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...
- linux学习第十七天 (Linux就该这么学)
今天12月14日学习比较少点,等了一会,主要讲了squid代理,1,正向代理 2反向代理 正向代表分为:标准的正向代理,透明的正向代理 ,这个比较实用, 还讲了RHCE考试的中的内容 iscsi 是 ...
- springboot无法加载oracle驱动终极解决
.ctrl+shirt+s .找到 Maven: com.oracle:ojdbc6: .找到classes 下的路径C:\Users\Administrator\.m2\repository\com ...
- Git push 提交代码到远程global user.name错误解决办法
问题:安装了Git-1.9.4-preview和TortoiseGit等工具后,Git服务器开通了账号和密码并配置了邮箱.克隆了服务器代码到本地,按需求进行代码开发.提交本地代码到服务器时出现错误.具 ...
- 实现一个简易版RPC
上篇博客主要介绍了dubbo的使用,这篇文章主要深入rpc的核心原理 准备知识: 1 java 网络编程(这里使用的bio) 2 java动态代理 3 反射 ===================== ...
- linux sort排序命令的高级用法(按多个列值进行排列)
http://www.jquerycn.cn/a_9076 在linux中,使用sort按行进行排序是很简单的.不过有时,生活总是爱抛给你一个一个的问题.如果使用sort按多个列值排列,同时使用tab ...
- 解决mysql for docker容器报错:Authentication plugin 'caching_sha2_password' cannot be loaded
为图方便,懒得在mac上安装mysql了,一个是管理不方便,第二个是为了方便多机器同步开发环境.就使用docker安装了. 拉取mysql镜像 docker pull mysql 运行mysql实例 ...