A. java 中string類怎麼實現
ava字元串類(java.lang.String)是Java中使用最多的類,也是最為特殊的一個類,很多時候,我們對它既熟悉又陌生。
一、從根本上認識java.lang.String類和String池
首先,我建議先看看String類的源碼實現,這是從本質上認識String類的根本出發點。從中可以看到:
1、String類是final的,不可被繼承。public final class String。
2、String類是的本質是字元數組char[], 並且其值不可改變。private final char value[];
然後打開String類的API文檔,可以發現:
3、String類對象有個特殊的創建的方式,就是直接指定比如String x = "abc","abc"就表示一個字元串對象。而x是"abc"對象的地址,也叫
做"abc"對象的引用。
4、String對象可以通過「+」串聯。串聯後會生成新的字元串。也可以通過concat()來串聯,這個後面會講述。
6、Java運行時會維護一個String Pool(String池),JavaDoc翻譯很模糊「字元串緩沖區」。String池用來存放運行時中產生的各種字元串,
並且池中的字元串的內容不重復。而一般對象不存在這個緩沖池,並且創建的對象僅僅存在於方法的堆棧區。
B. java怎麼實現String的引用傳遞
1、定義全局變數 ,兩種方法,可以在方法內任意對其重新賦值,方法內變數名要與全局變數相同,也可以使用return新字元串,調用時重新賦值
2、定義局部變數 ,一種方法,只能通過調用方法return新字元串,對原字元串重新賦值
C. 在java中如何實現把String類型轉化為Time類型,例如:hh:mm:ss格式
java中實現把String類型的時間轉換成Time類型的時間可以使用SimpleDateFormat來轉換。
具體事例代碼實現如下:
public class Demo2 {
public static void main(String[] args) {
String str = "2015-01-01 12:12:12";//定義一個字元型的時間
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = (Date) simpleDateFormat.parse(str);//將這個字元型的時間轉換成Date型的時間
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date.toString());
}
}
SimpleDateFormat 是 Java 中一個非常常用的類,該類用來對日期字元串進行解析和格式化輸出。
D. 求java實現String list[] = { "1", "2", "3" }; 的排列組合代碼
對於這個問題,我首先需要糾正一下樓主的措辭,這是個組合問題,跟排列無關,用排列組合亦不恰當。下面說下我的想法
元素不能重復,首先應該去掉相同的元素,最好的辦法是用set來實現。參考api
Arrays.asList
set.addAll
其實呢,這個是一個遞歸的過程,考慮下面情況
對於數組
{「1」},它的組合數就是{「1」}。
如果再加上一個元素「2「到上面的數組中,那麼,如果這個」2「不用,實質上跟{"1"}的情況是一樣的,這與不能重復相矛盾,所以」2「一定要用,就是在"1"中再加上」2「;於是我們得到
對於數組{」1「,」2「}它的組合數是{」1「}
再加入一個{」2「}。也許你也考慮到另外一種情況,即」2「也是它的一個組合數,我們考慮丟了,為什麼呢,因為在{」1「}中實質上還有一個稱為空的集合。這樣的話,重新整理一下:
1.對於list
=
{"1"},它的組合包括
{"1"},以及
empty.
2.對於list={"1","2"},它的組合包括{」1「,」2「}(在{」1「}中加了」2「),{」2「}(在empty中加入」2「),也許你還會講還應該包括{」1「},但是這個{」1「}我們已經在第1步就已經算出來了,不用再考慮了。
按照這樣的規則進行下去,你會發現這樣就把所有的組合數遍歷出來了。要具體的代碼就等會兒,我現在有事。
E. 如何用JAVA實現這些String類,求完整程序
您好,這樣的:
/* StrDemo.java*******
**********************/
class StrDemo
{
public static void main(String args[])
{
String str1=new String("abcdefg");
String str2=new String("higklmn");
String str3=new String("abc");
String str4=new String();
System.out.println("str1的長度是"+str1.length());
int i=3;
System.out.println("第"+i+"個位置上的字元為"+str1.charAt(i));
if(str1.equals(str2)) str3="相等";
else str3="不相等";
System.out.println("str1和str2"+str3);
}
}
F. java關於String[] str = new String[]{};
大括弧的作用是初始化。
String[]str = new String[]{};
大括弧的意思是初始化,前面定義的String[]str ;
但是現在大括弧裡面是空的,也就是沒有內容,列印str的長度是0,但是如果這樣定義String[]str = new String[]{「111」,"22222"};str的長度就為2。
String類有個構造方法 String(byte ascii[],int hiByte);此方法是以位元組數組的形式生成一個字元串,數組中存放字元申各字元對應的ASCII碼。
為了和使用 1~3位元組表示一個代碼的 UTF(Unicode Text Format)兼容,這個構造方法的入口參數中用hiByte指出每個代碼含幾個高位位元組。對於ASCII碼而言,因為只有1個位元組,而沒有高位位元組,所以,hiByte的值為0,但對其他字元,hiByte的值可能為1或2。
(6)javastring實現擴展閱讀:
當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類,通過調用類(這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼;
存儲在class文件中,然後再通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程序的Java API調用。
G. Java怎麼實現輸入一個string表達式然後輸出計算的結果
import java.io.*;
import java.util.*;
class BinaryTree{
BinaryTree left=null;
BinaryTree right=null;
char data=0;
}
public class Calculator{
String porder="";
public void postorder(BinaryTree bt){
//遞歸後序遍歷二叉樹
if(bt!=null){
postorder(bt.left);
postorder(bt.right);
porder+=bt.data;
}
}
public int calc(String s){
//計算後綴表達式的值
int i=0,len=0,a=0,b=0;
Stack stack=new Stack();
len=s.length();
for(;i<len;i++){
char c=s.charAt(i);
switch(c){
case '+':
a=(int)stack.pop();
b=(int)stack.pop();
stack.push(a+b);
break;
case '-':
b=(int)stack.pop();
a=(int)stack.pop();
stack.push(a-b);
break;
case '*':
a=(int)stack.pop();
b=(int)stack.pop();
stack.push(a*b);
break;
case '/':
b=(int)stack.pop();
a=(int)stack.pop();
stack.push((int)a/b);
break;
default:
//該字元是數字
stack.push(c-'0');
}
}
return stack.pop();
}
public BinaryTree create(String s){
//構造二叉樹結點(遞歸)
int i=0,pos=0,len=0;
String l="",r="";
BinaryTree node=new BinaryTree();
len=s.length();
if(len==0) return null;
if(len==1){
//遞歸邊界
node.data=s.charAt(0);
return node;
}
//去括弧
while((pos=s.indexOf(")"))!=-1){
i=pos;
while((s.charAt(i)!='(')&&(i>0)) i--;
String sub=s.substring(i+1,pos);//括弧中的表達式
porder="";
postorder(create(sub));//得到後綴表達式
int sum=calc(porder);//計算後綴表達式的值,替換原來括弧中的表達式
s=s.substring(0,i)+String.valueOf(sum)+s.substring(pos+1);
len=s.length();//重新計算s的長度
}
//從後往前掃描得到的第一個優先順序最低的運算符號的位置
pos=-1;
for(i=len-1;i>0;i--){
char c=s.charAt(i);
if((c=='+')||(c=='-')){
pos=i;
break;
}
else if(((c=='*')||(c=='/'))&&(pos==-1)) pos=i;
}
//在pos位置將s分為左右兩部分,遞歸構造左右兩個部分的二叉樹
l=s.substring(0,pos);
r=s.substring(pos+1);
node.data=s.charAt(pos);
node.left=create(l);
node.right=create(r);
return node;
}
public static void main(String args[]) throws Exception{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String s=reader.readLine();
Calculator c=new Calculator();
BinaryTree bt=c.create(s);
c.postorder(bt);
System.out.println(c.calc(c.porder));
}
}
H. java中怎麼實現String類型變數作為函數參數
public void test(String str){
System.out,println(str);
}
I. java中如何實現string的第一個字母大寫
以下是方法:
publicstaticStringdo17(Stringstr){
if(str!=null&&str!=""){str=str.substring(0,1).toUpperCase()+str.substring(1);}returnstr;}J. java讀取text文件為String,如何實現
/**
* 主要是輸入流的使用,最常用的寫法
* @param filePath
* @return
*/
public static String read(String filePath)
{
// 讀取txt內容為字元串
StringBuffer txtContent = new StringBuffer();
// 每次讀取的byte數
byte[] b = new byte[8 * 1024];
InputStream in = null;
try
{
// 文件輸入流
in = new FileInputStream(filePath);
while (in.read(b) != -1)
{
// 字元串拼接
txtContent.append(new String(b));
}
// 關閉流
in.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
if (in != null)
{
try
{
in.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return txtContent.toString();
}