For 語句初始化、條件表示式和步進語句的執行順序
今天在看《think in Java》 的時候,看到逗號操作符,之前都沒有注意過,按照示例程式碼運行了一次,結果很意外,這裡記錄一下
for (int i =1, j = i + 10; i < 5; i++, j = i * 2){
System.out.println("i = " + i + " , j = " + j);
}
//i = 1 , j = 11
//i = 2 , j = 4
//i = 3 , j = 6
//i = 4 , j = 8
發現結果和現象中的完全不同,這是為什麼呢
其實理解for迴圈中各表示式的執行順序就理解了
step1: 初始化
setp2:條件表示式
step3:執行語句
step4:執行步進
然後執行step2
也就是說,int i =1, j = i + 10;
只是在進入for迴圈的時候執行一次初始化,後面每次迴圈都不再執行,執行初始化之後,執行條件表示式i < 5;
如果條件表示式成立,執行迴圈體,否則退出迴圈,
執行迴圈體後,執行步進語句。
上面的語句拆分一下,便於理解:
int i=1,j=a1(i);
for(; i<5; ){
System.out.println("i = " + i + " , j = " + j);
i++;
j = a2(i);
}
這裡先執行初始化,然後判斷條件是否成立,然後執行迴圈,然後執行步進,再判斷條件是否成立 …
相關推薦
For 語句初始化、條件表示式和步進語句的執行順序
今天在看《think in Java》 的時候,看到逗號操作符,之前都沒有注意過,按照示例程式碼運行了一次,結果很意外,這裡記錄一下 for (int i =1, j = i + 10; i < 5; i++, j = i * 2){
Java_20_迴圈結構_While迴圈_Do-while迴圈(執行順序:初始化、布林表示式條件判斷、迴圈體、迭代)
迴圈結構1.當型:當P條件成立時(T),反覆執行A,知道P為“假”時才停止迴圈。2.直到型:先執行A,在判斷P,若為T,在執行A,如此反覆,知道P為F。While迴圈在迴圈剛開始時,會計算一次“布林表示式”的值,若條件為真,執行迴圈體。而對於後來每一次額外的迴圈,都會在開始前
乘法表函式+交換兩個數函式+判斷閏年函式+陣列初始化、清空和逆置函式+判斷素數函式
寫一個函式,列印所輸入數字的乘法表: #include <stdio.h> /* 寫一個函式,實現所輸入數字的乘法表 */ void table(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j
陣列的初始化、清空和逆置
#include <stdio.h> #include <stdlib.h> void Init(int arr[], int size) { // memset 一個位元組一個位元組的填充 memset(arr, 0, size*sizeof(
java陣列的宣告、初始化、遍歷和預設值
原始碼如下:package array; public class ArrayTest { public static void main(String[] args){ int[] iArray = new int[3]; double[] dArray = new double[3]; f
帶頭結點的迴圈連結串列表示佇列的初始化、入佇列和出佇列的演算法
假設以帶頭結點的迴圈連結串列表示佇列,並且只設一個指標指向隊尾元素結點(注意不設頭指標),試編寫相應的佇列初始化、入佇列和出佇列的演算法。 帶頭結點迴圈鏈佇列CLQueue的型別為以下LinkList型別:typede
陣列,json,List,Map的初始化、取值和遍歷記錄
1、陣列 /* * @author willon * 陣列遍歷demo * 陣列的初始化必須有固定長度 */ public class ArraytraversalDemo {public static void main(String[] args) { //未賦
Java一維陣列定義和初始化、二維陣列定義和初始化、傳參方式、Arrays類
陣列 陣列是Java中的一種資料型別,是一組資料的集合,陣列中的每個成員稱為元素。Java中的陣列是類型別(引用型別),Java的同一個陣列中,只能存放相同型別的資料元素。 一維陣列 一維陣列的定義方式 一維陣列有以下兩種定義方式,推薦使用第一種定義方式 <資料型別
tensorflow之變數:建立、初始化、儲存和載入
當訓練模型時,用變數來儲存和更新引數。變數包含張量 (Tensor)存放於記憶體的快取區。建模時它們需要被明確地初始化,模型訓練後它們必須被儲存到磁碟。這些變數的值可在之後模型訓練和分析是被載入。 本文件描述以下兩個TensorFlow類。點選以下連結可檢視完整的API文件
tensorflow教程:變數建立、初始化、儲存和載入
變數儲存到檔案 import tensorflow as tf import numpy as np # Create two variables. x_data = np.float32([1,2,3,4,5,6,7,8,9,0]) weights = tf.Variable(tf.random_norma
OC實現猜拳遊戲2.0(更簡單方法,用兩個物件、繼承、條件表示式、@proterty增強和點語法)
/*概述:玩家和電腦出拳,贏方加分,輸的一方不加分。每一局之後詢問玩家是否繼續。 分析:物件1:玩家,同電腦。方法:被詢問時選擇出拳並輸出選擇(列舉) 物件2:電腦,屬性:姓名,出的拳頭,分數。方法:出拳,判斷輸贏(傳玩家物件)並計分。
Java構造方法、靜態初始化塊、非靜態初始化塊的區別和用途
Static init Main. Static init A. Static init B. Static init C. Instance init A. Constructor A. Instance init B. Constructor B. Instance init C. Constructor
動態分配記憶體 and malloc&new and 陣列的動態分配、初始化(memset)和撤銷(delete)
在計算機的系統中有四個記憶體區域:1)棧:在棧裡面儲存一些我們定義的區域性變數和形參。2)字元常量區:主要儲存一些字元常量,比如:char *p_str="cat",其中"cat"就儲存於字元常量區裡。3)全域性區:在全域性區裡儲存一些全域性變數和靜態變數4)堆:主要是通過
curator原始碼(一) 初始化、啟動和關閉。
Curator框架是zookeeper客戶端框架,官網有句話說的很簡潔:curator對於zookeeper就像Guava對於java。 重複策略,例項化,眾多實用的食譜選單(分散式鎖,計數器,佇列,柵欄,訊號量,路徑快取)。 初始化 1.直接呼叫
一維陣列和二維陣列的建立、初始化、使用、儲存、指標訪問
1.解析一維陣列的建立和初始化 2.一維陣列的使用 3.一維陣列的儲存 4.一維陣列的指標訪問 5.解析二維陣列的建立和初始化 6.二維陣列的使用 7.二維陣列的儲存 8.二維陣列的指標訪問 1.解析一維陣列的建立和初始化
Java基礎學習 三 (類和物件、類和成員修飾符、this關鍵字、成員的初始化、構造器初始化)
面向物件的基本概念 類和物件 1.類的宣告 [修飾符關鍵字] class 類名 [extends 父類名] [implements 介面1,介面2]{ //類的主體內容 } public class tt extends Test implements Te
Servlet初始化、運行、銷毀全部過程
含義 步驟 dopost() 一次 sevice get方法 傳遞 ext 初始化 Servlet的生命周期是由servlet的容器來控制的。分為3個階段:初始化階段、運行階段、銷毀階段。 初始化階段: 初始化階段步驟: Ø Servlet容器加載se
Linux內存初始化(二)identity mapping和kernel image mapping
需要 存在 cat 當前 run 相對 gdi idm 虛擬地址 一、前言 本文沒有什麽框架性的東西,就是按照__create_page_tables代碼的執行路徑走讀一遍,記錄在初始化階段,內核是如何創建內核運行需要的頁表過程。想要了解一些概述性的、框架性的東西可以參考內
一:Greenplum5.10.2 生產環境安裝配置 (系統初始化、安裝準備)
添加 dead 有關 zlib 直接 dconf tables .rpm grub.conf 服務簡介: Greenplum Master Master只存儲系統元數據,業務數據全部分布在Segments上。其作為整個數據庫系統的入口,負責建立與客戶端的連接,SQL的解析並
mysql初始化、增刪改查用戶、授權
ear stat bit col led inf lis fec part 1. 數據庫安全初始化 [root@elasticsearch my.cnf.d]# mysql_secure_installation #安全初始化命令 NOTE: RUNNING