① 編寫java代碼,輸入一個字元串以及需要查找的字元串,顯示所有出現該字元串的位置。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTestHarnessV5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.printf("輸入你要啟手查找的文字: ");
Pattern pattern = Pattern.compile(scanner.nextLine());
System.out.printf("輸入字元串: ");
Matcher matcher = pattern.matcher(scanner.nextLine());
boolean found = false;
while (matcher.find()) {
System.out.printf("找到 \"%s\" 開始下標 %d 結束叢旁衡下標 %d.%n",
matcher.group(), matcher.start(), matcher.end());
found = true;
}
if (!found) {
System.out.printf("沒滲做有找到.%n");
}
}
}
}
② 編譯一個Java程序,要求:轉換字元串,A->Z,B->Y ......Z->A,a->z,b->y......z->a
publicclass${
publicstaticvoidmain(String[]args){
for(chari='A',j='Z';i<=j;i++,j--){
陸雹鉛纖System.out.println(i+"-->"+j);
}
System.out.println();
for(chari='a',j='z';i<=j;i++,j--){
System.out.println(i+"-->"早激帆+j);
}
}
}
③ 如何用javac 和java 編譯運行整個Java工程
前言 本文教你怎麼用javac和java命令 以及如何利用腳本(shell或bat)方便處理 並用簡單的實例展示這些用法
IDE是把雙刃劍 它可以什麼都幫你做了 你只要敲幾行代碼 點幾下滑鼠 程序就跑起來了 用起來相當方便 你不用去關心它後面做了些什麼 執行了哪些命令 基於什麼原理 然而也是這種過分的依賴往往讓人散失了最基本的技能 當到了一個沒有IDE的地方 你便覺得無從下手 給你個代碼都不知道怎麼去跑 好比給你瓶水 你不知道怎麼打開去喝 然後活活給渴死
之前用慣了Myeclipse Java文件編譯運行的命令基本忘得一干二凈 現在項目出了原型 放到伺服器上去測試 SSH一登陸上伺服器就傻眼了 都是命令行 以前程序圖標什麼的都成了浮雲 程序放上去了不知道怎麼去編譯運行 只能補補課了 下面做下補課筆記
一 javac命令javac 用於編譯Java文件 格式為 java [options] [sourcefiles] [@files]其中 options 命令行選項 sourcefiles 一個或多個要編譯的源文件 @files 一個或多個對源文件進行列表的文件 有時候要編譯的文件很多 一個個敲命令會顯得很長 也不方便修改 可以把要編譯的源文件列在文件中 在文件名前加@ 這樣就可以對多個文件進行編譯 對編譯一個工程很有用 方便 省事
有幾個比較重要的選項 d 用於指定編譯成的class文件的存放位置 預設情況下不指定class文件的存放目錄 編譯的class文件將和源文件在同一目錄下 classpath 可以簡寫成 cp 用於搜索編譯所需的class文件 指出編譯所用到的class文件的位置 如jar zip或者其他包含class文件的目錄 指定該選項會覆蓋CLASSPATH的設定 sourcepath用於搜索編譯所需的源文件(即java文件) 指定要搜索的源文件的位置 如jar zip或其他包含java文件的目錄 需要注意windows下和linux下文件路徑分隔符和文件列表(即 classpath和 sourcepath指定的文件)分隔符的區別 windows下文件路徑分隔符用 文件列表分隔符用分號 linux下文件路徑分隔符用 / 文件列表分隔符用冒號 二 java命令java 用於執行程序 格式如下 java [options] classfile options 命令行選項 一般用於 classpath 指定要執行的文件所在的位置以及需要用到的類路徑 包括jar zip和class文件目錄 會覆蓋CLASSPATH的設定三 腳本如果要敲的命令很長 每次要編譯運行的時候都要重新敲一遍 這是一件很痛苦的事情 所以用腳本可以大大方便你的工作量 在linux下用shell腳本 windows下用bat批處理程序 因為是在linux下 我這里只是簡單介紹一下shell 關於bat批處理程序的語法自己網路一下 不難
開頭linux有很多不同的shell 通常使用bash(bourne again shell) 程序必須以下面的行開始 #!/bin/sh #!用來告訴系統用後面的參數來執行程序 這里使用的是/bin/sh要使你的腳本能夠執行 還必須讓這個文件有可執行許可權 使用下面命令更改文件許可權 chmod +x filename 注釋以#開始的句子表示注釋 一直到這行結束 多寫注釋有利於以後重新看的時候知道自己在做什麼 變數shell的腳本的變數都是字元串 不用申明類型 定義的時候直接 變數=值 即可 用到變數的的時候用 $變數 或者 ${變數} echo命令用於列印 舉個例子 #!/bin/sh # 定義變數words 值為hello world words= hello world # 列印變數words的值echo $words 命令shell腳本裡面可以直接任意使用linux命令 要用到什麼命令直接敲進去即可 記住一些常用的命令 cd 打開目錄ls l 顯示目錄信息rm fr 遞歸刪除目錄及下面的文件 不提示信息mkdir 創建目錄pwd 顯示當前路徑kill pid 強制殺掉某個進程號的進程pkill 殺掉某個名字的進程ps aux 顯示運行進程信息netstat pan 查看網路埠監聽情況四 例子下面是文件pile 用於編譯整個java工程 把編譯的文件放到指定目錄下
view plain #!/bin/sh # Define some constants ONSSERVER=ONSServer PROJECT_PATH=/root/iot oid JAR_PATH=$PROJECT_PATH/lib BIN_PATH=$PROJECT_PATH/bin SRC_PATH=$PROJECT_PATH/src/$ONSSERVER
# First remove the sources list file if it exists and then create the sources file of the project rm f $SRC_PATH/sources find $SRC_PATH/ name * java > $SRC_PATH/sources list
# First remove the ONSServer directory if it exists and then create the bin directory of ONSServer rm rf $BIN_PATH/$ONSSERVER mkdir $BIN_PATH/$ONSSERVER
# Compile the project javac d $BIN_PATH/$ONSSERVER classpath $JAR_PATH/jdom jar $JAR_PATH/oro jar @$SRC_PATH/sources list下面是文件run 用於執行程序 view plain #!/bin/sh
# Define some constants ONSSERVER=ONSServer PROJECT_PATH=/root/iot oid JAR_PATH=$PROJECT_PATH/lib BIN_PATH=$PROJECT_PATH/bin
lishixin/Article/program/Java/hx/201311/27024
④ 如何解決java編譯時編碼問題造成的錯誤
Java源碼文件這些文件可以是任意字元編碼的,在Java的Class文件里存儲的字元串是UTF-8編碼的,所以如果在代碼中有中文字元的話,就會導致亂碼。當然,這只是眾多原因中的一種,所以把編碼設置統一是避免出現亂碼的解決辦法。
工具:
eclipse
方法如下:
點擊window--Preferences
附:也可以選擇Other,從Other中選擇程序需要的編碼格式。
⑤ java中怎麼執行字元串中的代碼
在javascript中eval()可以實現字元串轉代碼,java中需要使用動態編譯。
把獲得的字元串寫入一個臨時文件中,然後編譯它,在調用其中的函數。
我們把要轉換的字元串構造一個完整的類:如果方法是有返回值的.則:
public object eval(string str){
//生成java文件
string s = "class temp{";
s += "object rt(){"
s += "myclass mc = new myclass();"
s += " return mc."+str+"();";
s += "}"
s +="}";
file f = new file("temp.java");
printwriter pw = new printwriter(new filewriter(f));
pw.println(s);
pw.close();
//動態編譯
com.sun.tools.javac.main javac = new com.sun.tools.javac.main();
string[] cpargs = new string[] {"-d", "所在目錄","temp.java"};
int status = javac.compile(cpargs);
if(status!=0){
system.out.println("沒有成功編譯源文件!");
return null;
}
//調用temp的rt方法返回結果:
myclassloader mc = new myclassloader();
class clasz = mc.loadclass("test.class",true);
method rt = clasz.getmethod("rt", new class[]{ string[].class });
return rt.invoke(null, new object[] { new string[0] });
//如果方法沒有返回就直接調用
}
我們可以先寫好多個重載的eval,有返回值和沒有返回值的.以及可以傳遞參數的.
這樣我們就可以用字元串轉換為java的語句來執行.
⑥ java源代碼為什麼要編譯
程序設計高級語言的原理都是相似的。JAVA,C,C++,等都類似。
說一下JAVA的:
我們先把自然語言,也就是我們平時的話寫成程序設計高級語言,這是編程。
然後再通過編譯器生成class也就是位元組碼文件,這個過程是編譯。此時的class文件我們也可以稱之為二進制碼,就是計算機可識別的0,1文件了。而編譯是計算機內部運行,不需要編程者操作。
.java是以源文件形式存在,是編譯器和我們都可識別的語言。
編譯器識別了.java文件後生成.class文件,是編譯器和計算機可識別的語言。
然後計算機會使同名的.java和.class文件關聯,計算機自己有兩次翻譯過程,而這個過程操作者並不需要操心。之後我們就可以運行.java文件了。
⑦ java字元串怎麼轉換為代碼
方法是有的,但不全實際.
首先,你要理解,JAVA代碼的運行是要被編譯成位元組碼codebyte後才能被執行的,以你問題中的意思,那個字元串應該是在怎麼代碼被編譯後項目在運行時,再傳入的參數,這時,要想把傳入參數的字元串當成JAVA代碼來消並運行,只有一種辦法,就是把傳進來的字元串轉換成位元組碼,並且,要虛擬加一個方法體出來.這也不是不可行,可用的技術有asm.cglib等位元組碼技術.但你想,對於你的問改謹題.這樣有實際核橋基的意義嗎
你還不如,把system.out.print重定義成新的外調方法調動來的清晰
⑧ java中怎麼將字元串編譯成可執行的有效語法
你說的什麼意思我沒看懂。字元串為:setName() ????待括弧的都是方法啊。你前握希望setName()可以對name屬性賦值。你說的是不團亂是封裝。get和set方法??代碼發來給你看看慧或慶。
⑨ 編譯java程序需要使用什麼命令
編譯命令是 javac
首先使用記事本編輯一段簡單的Java代碼
⑩ java字元串如何解析成能運行的java代碼
java字元串如何解析成運行的java代碼
有些情況下,不得不動態運行Java代碼,以便提供更加靈活的方式,以下代碼可參考(在JDK 1.5+平台上運行通州帆過):
public static void main(String[] args) {
int i = 10;
String code = "System.out.println(\"Hello World!\"+(13+2*5/3));";
code += "for(int i=0;i<" + i + ";i++){";
code += " System.out.println(Math.pow(i,2));";
code += "}";
try {
run(code);
} catch (Exception e) {
e.printStackTrace();
}
}
private synchronized static File compile(String code) throws Exception {
File file = File.createTempFile("JavaRuntime", ".java", new File(System.getProperty("user.dir")));
file.deleteOnExit();
// 獲得類指芹名
String classname = getBaseFileName(file);
// 將代碼輸出到文件
PrintWriter out = new PrintWriter(new FileOutputStream(file));
out.println(getClassCode(code, classname));
out.close();
// 編譯生成的java文件
String[] cpargs = new String[] { "-d",
System.getProperty("user.dir") + "\\WebRoot\\WEB-INF\唯跡畢\classes",
file.getName() };
int status = Main.compile(cpargs);
if (status != 0) {
throw new Exception("語法錯誤!");
}
return file;
}
private static synchronized void run(String code) throws Exception {
String classname = getBaseFileName(compile(code));
new File(System.getProperty("user.dir")
+ "\\WebRoot\\WEB-INF\\classes\\" + classname + ".class")
.deleteOnExit();
try {
Class cls = Class.forName(classname);
Method main = cls.getMethod("method", null);
main.invoke(cls, null);
} catch (Exception se) {
se.printStackTrace();
}
}
private static String getClassCode(String code, String className) {
StringBuffer text = new StringBuffer();
text.append("public class " + className + "{\n");
text.append(" public static void method(){\n");
text.append(" " + code + "\n");
text.append(" }\n");
text.append("}");
return text.toString();
}
private static String getBaseFileName(File file) {
String fileName = file.getName();
int index = fileName.indexOf(".");
String result = "";
if (index != -1) {
result = fileName.substring(0, index);
} else {
result = fileName;
}
return result;
}