Button19.setOnClickListener(new View.OnClickListener() {//添加一個OnClickListener接口的匿名實例/對象
新河網站制作公司哪家好,找創(chuàng)新互聯(lián)!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、響應式網站建設等網站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創(chuàng)新互聯(lián)。
public void onClick(View v) {//當click事件發(fā)生時會調用這個onclick方法
// TODO Auto-generated method stub
if (str_result!=""){//1:判斷字符串是否與空串常量的內存地址相同,凡是在源代碼中出現(xiàn)的"xxxxx",統(tǒng)統(tǒng)屬于全局靜態(tài)常量。字符串比較千萬別用“==”“!=”。
double b = Double.parseDouble(str_result);
//2:把str_result的字符串轉為double類型的數(shù)據(jù)
str_result = ""+b*b;
//3:把str_result設為b的平方。""+數(shù)值型 ——〉轉為字符串類型
entry.setText(String.valueOf(str_result));
//4:把entry的顯示文字設為str_result,也即原來的輸入的數(shù)字的平方。String.valueOf用得有點多余。
}
}
}
//以下的看來是對上面那段毛病代碼的修正。
if(str_oper.equals("*")){//對代碼1的修正,這才是判斷字符串內容是否相同。
g=Double.parseDouble(str_display.toString());//跟代碼2一個意思,只是轉換的對象是一個字符串緩沖區(qū)里的字符串。這里不明白為什么要使用字符串緩沖區(qū)。
str_result=String.valueOf((b*g));
//等價于代碼3。兩者都對。
entry.setText(str_result);
//等價于代碼4。
str_display=new StringBuffer("");
//為str_display開辟一個新的字符串緩沖區(qū)。字符串緩沖區(qū)的作用是避免每一次字符串拼接修改都得new一個字符串對象。這里是干嗎用的,由于沒看到完整程序,不清楚。
你可以嘗試使用 split 轉換成字符串數(shù)組,再遍歷數(shù)組進行操作
String[] aa = "123|456|789|987654".split("|");
aa[0] 和 aa[1] 就是前兩列啦
一樓的說的夠全面了,不過稍有誤解.
再來表示抱歉,我對編程語言中的中文名詞非常不了解,所以如果以下的回復對你的閱讀或者理解造成困難,請見諒.
1.首先,要明白這個問題的答案,需要了解call?(pass)?by?value?和?call?(pass)?by?reference?的區(qū)別.簡單來說:
call?by?value通常是復制這個parameter的值去另外一塊內存里,然后傳給function,?所以在method/function里邊對這個變量的所有變更,實際上都是對復制過來的鏡像進行操作,不會對原本的variable有任何影響.
call?by?reference是將parameter的reference傳給function,簡單點理解就是直接把variable傳給function.所以說這個variable的值是可以被function改變的.這個用法在c/c++中非常常見,用法是variable_name.
2.再來,在Java里邊,你可以很簡單的理解為:?Java中只有call?by?value,?也就是說,所以所有傳給function的parameter本身都不會被改變.?(這是最簡單直白的理解,當然也有另一種常從sun的人那邊聽到的說法:Java是call?by?value?+?call?by?reference?by?value)
3.那么現(xiàn)在的問題就是為什么第二個結果是2了.?首先說一下sun官方的解釋:?對于reference?type在作為parameter/argument的時候,也是call?by?value,?但是在你擁有足夠權限時(比方說那個變量是public的,?不是final的等等各種符合的情況),可以修改這個object中fields的值(也就是屬于這個object(嚴謹點講是an?instance?of?the?object)?內部的變量,?在你的例子中,?ko?里邊的?a?就是一個field,?所以update(ko)會使ko.a變成2).
4.如果你是一個有過c/c++學習經驗的人或者你以上的解釋很難理解,以下這種說法或許更適合你?(當然了,這只是大多包括我在內有c經驗的人的一種理解方式)
這里可以引入一個新的概念,pointer.?這是一種比較特殊的變量,它內部所儲存的東西,其實只是另外一個變量的內存地址.?如果對內存沒有概念,你可以把它簡單理解為是風箏的線軸,雖然看它本身看不出什么端倪,但是順著摸過去總會找到風箏,看到它是什么樣子.?以pointer方式理解Java的人,通常會說:?Type?variable?=?new?Type();?這個過程中,最后生成的這個variable其實就是一個pointer,而不是instance本身.
在Java中,?有c/c++經驗的人通常認為Java是call?by?value.同時,當一個變量用在儲存reference?type的時候,實際上儲存的是它的pointer,這也一樣可以解釋為什么ko.a會有2這個結果,因為雖然pointer被傳到function里邊時,本身是call?by?value,無法被改變.但這并不影響function本身對這個pointer指向的object的內容做任何改變.?當然,再次聲明,這只是一種幫助有c/c++經驗的人理解的方法.?Sun本身嚴正聲明Java里邊沒有pointer這個東西的存在.
5.?再來解釋一下為什么說樓上所說的(或者說樓上引用的)理解略有偏差.
引用"我們上面剛學習了JAVA的數(shù)據(jù)類型,則有:值類型就是按值傳遞的,而引用類型是按引用傳遞的"?這句話很明顯的有兩點錯誤.?第一點,如果我上面所說的,Java是沒有call?by?reference的.
第二點,暫且假設Java里邊是有call?by?reference的,?這句話依然不成立.
Java中的變量有兩種類型:?primitive?types?和?reference?type.
primitive?type包括byte,?short,?int,?long,?char,?boolean,?float和double.
而這8種之外的所有的,都是reference?type.
下面是一段對你的貼上來的code的一點延伸,希望可以幫助你更好的理解Java中的argument?/?parameter到底是如何運作的.
public?class?Test?{
public?static?void?main(String[]?args)?{
int?a?=?1;
Koo?koo?=?new?Koo();
Object?o?=?new?Integer(1);
Koo?newKoo?=?new?Koo();
update(a);
update(koo);
update(o);
update(newKoo);
newUpdate(newKoo);
System.out.println(a);
System.out.println(koo.a);
System.out.println(o);
System.out.println(newKoo.a);
}
static?void?update(int?a)?{
a++;
}
static?void?update(Koo?koo)?{
koo.a++;
}
static?void?update(Object?o)?{
o?=?(int)?(Integer.parseInt(o.toString())?+?1);
}
static?void?newUpdate(Koo?koo)?{
koo?=?new?Koo();
}
}
class?Koo?{
int?a?=?1;
}
/*
o?=?(int)?(Integer.parseInt(o.toString())?+?1);?這一行中的(int)純粹是多余的,是否有這個casting對code本身沒有任何影響.?如果你高興也可以用
o?=?new?Integer(Integer.parseInt(o.toString())?+?1);
或者干脆
o?=?Integer.parseInt(o.toString())?+?1;
*/
以上這些code運行之后會得到1?2?1?2的結果.?后面兩個結果可以很好的說明,?即使對objects?(reference?type?variables)?來看,?Java所應用的也并不是call?by?reference.?否則的話,以上code運行結果應該是1?2?2?1
希望你可以真正理解這個新的例子中,產生1212這個結果的原因,從而對Java中的arguments有一個系統(tǒng)全面的認識.
圖片是相關資料的鏈接,知道里貌似不能加網址
第一個if是判斷searchkey是不是空的,如果不是空的,就追加到name字段作為查詢條件,like模糊查詢
接著第二個if判斷如果status的值不為空,就追加到status作為條件
如果status為空,走else分支,從userContext中獲取到employee對象,接著判斷,如果它的角色不是manager的話
把這個對象的id拿出來,作為seller.Id的條件進行查詢
lrc可以通過如下util工具類進行轉換,如果想知道結果是否讀取的有問題,可以直接用記事本打開lrc文件的,之后和輸出結果比對一下就行。
package com.routon.utils;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.util.Log;
/**
* parse lrc file tool
* eg:
* utilLrc lrc = new utilLrc("/sdcard/test.lrc");
* get song name : String title = lrc.getTitle();
* get performer name : String artist = lrc.getArtist();
* get album name: String album = lrc.getAlbum();
* get lrcmaker name: String lrcMaker = lrc.getLrcMaker();
* get song list: ListStatement list = lrc.getLrcList();
*
* @author xuweilin
*
*/
public class utilLrc {
private static String TAG = "utilLrc";
public class Statement {
private double time = 0.0; //time, 0.01s
private String lyric = ""; //song word
/*
* get time
*/
public double getTime() {
return time;
}
/*
* set time
*/
public void setTime(double time) {
this.time = time;
}
/*
* set time.format:mm:ss.ms
*/
public void setTime(String time) {
String str[] = time.split(":|\\.");
this.time = Integer.parseInt(str[0])*60+Integer.parseInt(str[1])+Integer.parseInt(str[2])*0.01;
}
/*
* get lrc word
*/
public String getLyric() {
return lyric;
}
/*
* set lrc word
*/
public void setLyric(String lyric) {
this.lyric = lyric;
}
}
private BufferedReader bufferReader = null;
private String title = "";
private String artist = "";
private String album = "";
private String lrcMaker = "";
private ListStatement statements = new ArrayListStatement();
/*
*
* fileName
*/
public utilLrc(String fileName) throws IOException{
FileInputStream file = new FileInputStream(fileName);
bufferReader = new BufferedReader(new InputStreamReader(file, "utf-8"));
readData();
}
/*
* read the file
*/
private void readData() throws IOException{
statements.clear();
String strLine;
while(null != (strLine = bufferReader.readLine()))
{
if("".equals(strLine.trim()))
{
continue;
}
if(null == title || "".equals(title.trim()))
{
Pattern pattern = Pattern.compile("\\[ti:(.+?)\\]");
Matcher matcher = pattern.matcher(strLine);
if(matcher.find())
{
title=matcher.group(1);
continue;
}
}
if(null == artist || "".equals(artist.trim()))
{
Pattern pattern = Pattern.compile("\\[ar:(.+?)\\]");
Matcher matcher = pattern.matcher(strLine);
if(matcher.find())
{
artist=matcher.group(1);
continue;
}
}
if(null == album || "".equals(album.trim()))
{
Pattern pattern = Pattern.compile("\\[al:(.+?)\\]");
Matcher matcher = pattern.matcher(strLine);
if(matcher.find())
{
album=matcher.group(1);
continue;
}
}
if(null == lrcMaker || "".equals(lrcMaker.trim()))
{
Pattern pattern = Pattern.compile("\\[by:(.+?)\\]");
Matcher matcher = pattern.matcher(strLine);
if(matcher.find())
{
lrcMaker=matcher.group(1);
continue;
}
}
int timeNum=0;
String str[] = strLine.split("\\]");
for(int i=0; istr.length; ++i)
{
String str2[] = str[i].split("\\[");
str[i] = str2[str2.length-1];
if(isTime(str[i])){
++timeNum;
}
}
for(int i=0; itimeNum;++i)
{
Statement sm = new Statement();
sm.setTime(str[i]);
if(timeNumstr.length)
{
sm.setLyric(str[str.length-1]);
}
statements.add(sm);
}
}
sortLyric();
}
/*
* judge the string is or not date format.
*/
private boolean isTime(String string)
{
String str[] = string.split(":|\\.");
if(3!=str.length)
{
return false;
}
try{
for(int i=0;istr.length;++i)
{
Integer.parseInt(str[i]);
}
}
catch(NumberFormatException e)
{
Log.e(TAG, "isTime exception:"+e.getMessage());
return false;
}
return true;
}
/*
* sort the word by time.
*/
private void sortLyric()
{
for(int i=0;istatements.size()-1;++i)
{
int index=i;
double delta=Double.MAX_VALUE;
boolean moveFlag = false;
for(int j=i+1;jstatements.size();++j)
{
double sub;
if(0=(sub=statements.get(i).getTime()-statements.get(j).getTime()))
{
continue;
}
moveFlag=true;
if(subdelta)
{
delta=sub;
index=j+1;
}
}
if(moveFlag)
{
statements.add(index, statements.get(i));
statements.remove(i);
--i;
}
}
}
/**
* get title
* @return
*/
public String getTitle(){
return title;
}
/**
* get artist
* @return
*/
public String getArtist(){
return artist;
}
/**
* get album
* @return
*/
public String getAlbum(){
return album;
}
/**
* get lrc maker
* @return
*/
public String getLrcMaker(){
return lrcMaker;
}
/**
* get song list
* @return
*/
public ListStatement getLrcList(){
return statements;
}
}
磁力鏈接都是以magnet:?xt=urn:btih:開頭的字符串
所以可以通過判斷字符串中是否有magnet:?xt=urn:btih:來初步簡單的判斷是否包含磁力鏈接
public?class?Demo?{
public?static?void?main(String[]?args)?{
String?str?=?"發(fā)酵飼料的飛機magnet:?xt=urn:btih:0E9CD4D2A90EA2F2F4D42F1C35CC7BF8E1CBBB8A阿薩德飛說";
if?(str.contains("magnet:?xt=urn:btih:"))?{
System.out.println("有磁力鏈接");
}?else?{
System.out.println("沒有磁力鏈接");
}
}