<commit_before>---
layout: post
title:  "resin host conf"
date:  2016-03-28 15:25:00 +0800
categories: java
tags: java
keywords: java,web1992
---


java i++ 与 ++i 的区别
---

<!--more-->
java代码1
---

	{% highlight java %}
	public class Test {

	   public static void main(String[] args) {

		        int q = 0;
			q = q++;
			System.out.println(q);
	  }

	{% endhighlight %}

>输出结果 0
>
java代码2
---                                                    
                                                     
        {% highlight java %}                         
        public class Test {                          
                                                     
           public static void main(String[] args) {  
                                                     
                        int q = 0;                   
                        q = ++q;                     
                        System.out.println(q);       
          }                                          
                                                     
        {% endhighlight %}     

>输出结果 1
> 

出现这个现象的原因是由java的编译器确定的(JVM)
---
> 运行下面命令，查看反编译之后的代码
>
> javap -c Test
>

代码1的反编译
---
	{% highlight java %} 
	Code:
    	0: iconst_0
    	1: istore_1
    	2: iload_1
    	3: iinc          1, 1
    	6: istore_1
    	7: getstatic     #2   
   		10: iload_1
   		11: invokevirtual #3   
   		14: return
	{% endhighlight  %} 

 代码2的反编译： 
---
	{% highlight java %} 
	Code:
	0: iconst_0
	1: istore_1
	2: iinc          1, 1
	5: iload_1
	6: istore_1
	7: getstatic     #2    
	10: iload_1
	11: invokevirtual #3    
	14: return 
	{% endhighlight  %} 
   

                  
反编译之后的代码区别：

![](http://i.imgur.com/zlue6od.png)
![](http://i.imgur.com/7aBMw2D.png)


>代码1先进行load -> inc自增 -> store
>
>代码2先进行inc自增 -> load -> store
>
>>代码1先load栈中的数据，然后使栈中的数据+1,然后把栈中数据赋值给变量q
>
>>代码2先使栈中的数据+1，然后load栈中的数据,然后把栈中数据赋值给变量q

<commit_msg>fix java i++ and ++i<commit_after>---
layout: post
title:  "java i++ 与 ++i 的区别"
date:  2016-03-28 15:25:00 +0800
categories: java
tags: java
keywords: java,web1992
---


java i++ 与 ++i 的区别
---

<!--more-->
java代码1
---

	{% highlight java %}
	public class Test {

	   public static void main(String[] args) {

		        int q = 0;
			q = q++;
			System.out.println(q);
	  }

	{% endhighlight %}

>输出结果 0
>
java代码2
---                                                    
                                                     
        {% highlight java %}                         
        public class Test {                          
                                                     
           public static void main(String[] args) {  
                                                     
                        int q = 0;                   
                        q = ++q;                     
                        System.out.println(q);       
          }                                          
                                                     
        {% endhighlight %}     

>输出结果 1
> 

出现这个现象的原因是由java的编译器确定的(JVM)
---
> 运行下面命令，查看反编译之后的代码
>
> javap -c Test
>

代码1的反编译
---
	{% highlight java %} 
	Code:
    	0: iconst_0
    	1: istore_1
    	2: iload_1
    	3: iinc          1, 1
    	6: istore_1
    	7: getstatic     #2   
   		10: iload_1
   		11: invokevirtual #3   
   		14: return
	{% endhighlight  %} 

 代码2的反编译： 
---
	{% highlight java %} 
	Code:
	0: iconst_0
	1: istore_1
	2: iinc          1, 1
	5: iload_1
	6: istore_1
	7: getstatic     #2    
	10: iload_1
	11: invokevirtual #3    
	14: return 
	{% endhighlight  %} 
   

                  
反编译之后的代码区别：

![](http://i.imgur.com/zlue6od.png)
![](http://i.imgur.com/7aBMw2D.png)


>代码1先进行load -> inc自增 -> store
>
>代码2先进行inc自增 -> load -> store
>
>>代码1先load栈中的数据，然后使栈中的数据+1,然后把栈中数据赋值给变量q
>
>>代码2先使栈中的数据+1，然后load栈中的数据,然后把栈中数据赋值给变量q


{'fraction_non_alphanumeric': 0.11087756174461377, 'fraction_numerical': 0.04256437204414083, 'mean_word_length': 1.0174880763116056, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 47, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 28, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1193382', 'n_tokens_mistral': 1534, 'n_tokens_neox': 1436, 'n_words': 272}