⑴ java中的private到底有什麼用
private是訪問控制修飾符,用來使用訪問控制符來保護對類、變數、方法和構造方法的訪問。
在程序中需要隱藏類的實現細節和保護類的數據時,就要使用private來修飾。例如:
public class Logger {
private String format;
public String getFormat() {
return this.format; }
public void setFormat(String format) {
this.format = format; }
}
實例中,Logger 類中的 format 變數為私有變數,所以其他類不能直接得到和設置該變數的值。為了使其他類能夠操作該變數,定義了兩個 public 方法:getFormat() (返回 format的值)和 setFormat(String)(設置 format 的值)。
(1)javavariant類型擴展閱讀
1、private的訪問控制:
當前類:可見
同一包內:不可見
子孫類(同一包):不可見
子孫類(不同包):不可見
其他包:不可見
2、private的使用對象:變數、方法;不能修飾類(外部類)。
⑵ java中如何初始定義一個數組是float型的
float foo[]=new float[n];
n為該陣列的長度。
一維陣列的初始化例子:float foo={1,2,3,4,5};
#include<stdio.h>
void main() { int a[10],i;
for ( i=0;i<10;i++ ) a[i]=i+1;
for ( i=0;i<10;i++ ) printf("%d ",a[i]); printf("
");
}
整體判斷很難,找不到這樣的函式啊。用第一個元素判斷可以的:
VB code
Option Explicit
Dim XXX(99) As Variant
Private Sub Form_Load()
'Dim i As Long
'For i = 0 To 99
' XXX(i) = i
'Next
If IsEmpty(XXX(0)) Then
Debug.Print "沒有初始化!"
Else
Debug.Print "已經初始化!"
End If
End Sub
看半天沒弄明白樓主的意思,到底是要定義一個float型別的變數,還是一個語句?
初始化一個數組一般有2種方法:一個是單獨給陣列中的元素賦值;還有一種是把所有的元素一起初始化。
下面簡要棗態旅介紹初始化陣列的2種方法:
第一種方法:
$a["color"]="red";
$a["taste"]="sweet";
$a["shape"]="round";
$a["name"]="apple";
$a[3]=4;
第二種方法:
$a=array(
"color"=>"red",
"taste"=>"sweet",
"shape"=>"round",
"name"=>"apple",
3=>4);
這兩種方法的效果是相同的,不同的只是給元素賦值的方法不同。
<?php
$arr =array();
這樣$arr就初始化了
?>
你好,
ArrayList al = new ArrayList();
al[0] = 類物件;
或:
object[] objs = new objects[看要放幾個];
objs[0] = 類物件;
讀取, 類名 cls = objs[0] as 類名
類名 cls = al[0] as 類名
#include<stdio.h>
void main() { float a[10]; int i;
for ( i=0;i<10;i++ ) a[i]=1.0f/i;
for ( i=0;i<10;i++ ) printf("%d ",a[i]);
printf("
");
}
既然是rom即只讀儲存器,閉兄無須定義,直接將資料段指向具 *** 置,可直接讀取它們。
⑶ java如何使用靜態庫
1.缺少declare,正確的描述如下
private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
2 declare的說明
Declare 語句
用於在模塊級別中聲明對動態鏈接庫 (DLL) 中外部過程的引用。
語法 1
[Public | Private] DeclareSubnameLib"libname" [Alias"aliasname"] [([arglist])]
語法 2
[Public | Private] DeclareFunctionnameLib"libname" [Alias"aliasname"] [([arglist])] [Astype]
Declare 語句的語法包含下面部分:
部分 描述
Public 可選的。用於聲明對所有模塊中的所有其它過程都可以使用的過程。
Private 可選的。用於聲明只能在包含該聲明的模塊中使用的過程。
Sub 可選的(但Sub 或 Function 二者需選其一)。表示該過程沒有返回值。
Function 可選的(但Sub 或 Function 二者需選其搜塵正一)。表示該過程會返回一個可用於表達式的值。
name 必需的。任何合法的過程名。注意動兄指態鏈接庫的入口處(entry points)區分大小寫。
Lib 必需的。指明包含所聲明過程的動態鏈接庫或代碼資源。所有聲明都需要Lib 子句。
libname 必需的。包含所聲明的過程動態鏈接庫名或代碼資源名。
Alias 可選的。表示將被調用的過程在動態鏈接庫 (DLL)
中還有另外的名稱。當外部過程名與某個關鍵字重名時,就可以使用這個參數。當動態鏈接庫的過程與同一范圍內的公用變數、常數或任何其它過程的名稱相同時,也可以使用
Alias。如果該動態鏈接庫過程中的某個字元不符合動態鏈接庫的命名約定時,也可以使用 Alias。
aliasname 可選的。動態鏈接庫或代碼資源中的過程名。如果首字元不是數世悔字元號 (#),則
aliasname 是動態鏈接庫中該過程的入口處的名稱。如果首字元是
(#),則隨後的字元必須指定該過程的入口處的順序號。
arglist 可選的。代表調用該過程時需要傳遞的參數的變數表。
type 可選的。Function 過程返回值的數據類型;可以是 Byte、布爾、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)或 Variant,用戶定義類型,或對象類型。
arglist 參數的語法以及語法各個部分如下:
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [Astype]
⑷ java中如何map轉換為數組
map.put("123",newfloat[]{11,11,11});
按照已有的代碼,存進去的時候,new一個float數組,直接傳值就可以。
或
Map sMap = new HashMap<String[], String>();
String[] strs = {"1","2"};
sMap.put(strs, "map的鍵值可以為數組");
System.out.println(sMap.get(strs));//---->map的鍵值可以為數組。
(4)javavariant類型擴展閱讀:
一個數組中的所有元素具有相同的數據類型(在C、C++、Java、pascal中都這樣。但也並非所有涉及數組的地方都這樣,比如在Visual Foxpro中的數組就並沒這樣的要求)。當然,當數據類型為 Variant 時,各個元素能夠包含不同種類的數據(對象、字元串、數值等等)。可以聲明任何基本數據類型的數組,包括用戶自定義類型和對象變數。
⑸ 誰能幫我解釋一下這段程序的意思最好每一句特別是開頭那幾句有什麼作用萬分感謝
小弟只有10年VC++經驗,幫你解讀一下哦: 滿意的話麻煩給我分.
如下代碼是為了實現: 接收串口過來的數據! 首先初始化一個泛型類型接受容器, 接收串口介面發來的數據,然後顯示在界面上的edit控制項上!
VARIANT variant_inp; 用VARIANT 泛型變數類型 定義一個數組變數variant_inp; 泛型就是任何類型都可以放進去的意思. 作為緩沖池使用很適合.
COleSafeArray safearray_inp; 用兄顫螞COleSafeArray用OLE安全數據容器類 定義一個對象名字是 safearray inp 因為VARIANT雖然可以放任何類型數據到這個數組中,但該類型沒有豐富的處理成員函數,說白了他是結構體不是類, 所以 需要做個轉換, 轉為COleSafeArray類型的數組類即可. 他具有非常豐富的成員函數.
那麼, 你會問為什麼不直接讓safearray_inp=m_ctrlComm.GetInput(); 讀緩沖區,而要經過一個中間變數呢?
variant_inp=m_ctrlComm.GetInput(); 讀緩沖區
safearray_inp=variant_inp; VARIANT轉換成COleSafeArray型變數
VARIANT和COleSafeArray 是什麼關系呢?
原因是:
這中間有調用不同的重載=運算符,m_ctrlComm.GetInput(); 的數據可以轉化為variant_inp,有默認的轉化方式,而safearray_inp=variant_inp則是另一個轉化方式,如果直接轉,可能數據不對。
VARIANT和COleSafeArray 一個是結構體,一個是類,各自的數據構造不一樣。
long k=0; 初始化一個長整型變數 k=0;
int len; 定義長度len,整數型.
BYTE rxdata[2048]; 定義接受數據的數組,2k大小,2048位元組. 為BYTE類型,也即unsigned char類型.
CString strtemp; 定義一個CString類型的字元串strtemp;
if(m_ctrlComm.GetCommEvent()) 如果控制通信對象m_ctlComm有get的事件發生,
{
------------------------
這里應該加switch(ret) , 將上面getcommevent賦值給ret.
case 2: 事件值為2表示接收緩沖區內有字元
{
variant_inp=m_ctrlComm.GetInput(); 控制通信器對象得到輸入數據流. 如果GetCommEvent返回2,說明有字元到達了, 接收緩沖區內有字元
safearray_inp=variant_inp; 將variant inp轉換為COleSafeArray 類型,付給safearry inp. 因為COleSafeArray提供了豐羨埋富的函數處理.符合我們的需要.
len=safearray_inp.GetOneDimSize(); 獲取輸入安全數組的長度len
for(k=0;k<len;k++) 做個循環,
{
safearray_inp.GetElement(&k,rxdata+k); 從輸入的安全數組到rxdata進行數據拷貝. 一次一個位元組拷貝.
}
for(k=0;k<len;k++) 做個循環. 讀取len長度的所有位元組.
{
BYTE bt=*(char*)(rxdata+k); 內存 rxdata 起始地址+k位元組偏移的指針 取值,得到 一個位元組.
strtemp.Format("%c",bt); strtemp賦值為bt,也就是一個字元.
m_strEditRXData+=strtemp; m_strEdit這個CEdit控制項顯示一洞悶直加長.
}
}
UpdateData(FALSE); 將內存變數數據更新到界面.
====================
參考:
VARIANTC++、BASIC、Java、Pascal、Script......計算機語言多種多樣,而它們各自又都有自己的數據類型,COM
產生目的,其中之一就是要跨語言(注3)。而 VARIANT
數據類型就具有跨語言的特性,同時它可以表示(存儲)任意類型的數據。從C語言的角度來講,VARIANT
其實是一個結構,結構中用一個域(vt)表示------該變數到底表示的是什麼類型數據,同時真正的數據則存貯在 union
空間中。結構的定義太長了(雖然長,但其實很簡單)大家去看 MSDN 的描述吧,這里給出如何使用的簡單示例:
學生:我想用 VARIANT 表示一個4位元組長的整數,如何做?
老師:VARIANT v; v.vt=VT_I4; v.lVal=100;
學生:我想用 VARIANT 表示布爾值「真」,如何做?
老師:VARIANT v; v.vt=VT_BOOL; v.boolVal=VARIANT_TRUE;
學生:這么麻煩?我能不能 v.boolVal=true; 這樣寫?
老師:不可以!因為
類型
位元組長度
假值
真值
bool
1(char)
0(false)
1(true)
BOOL
4(int)
0(FALSE)
1(TRUE)
VT_BOOL
2(short int)
0(VARIANT_FALSE)
-1(VARIANT_TRUE)
所以如果你 v.boolVal=true 這樣賦值,那麼將來 if(VARIANT_TRUE==v.boolVal)
的時候會出問題(-1 !=
1)。但是你注意觀察,任何布爾類型的「假」都是0,因此作為一個好習慣,在做布爾判斷的時候,不要和「真值」相比較,而要與「假值」做比較。
學生:謝謝老師,你太牛了。我對老師的敬仰如滔滔江水,連綿不絕......
學生:我想用 VARIANT 保存字元串,如何做?
老師:VARIANT v; v.vt=VT_BSTR; v.bstrVal=SysAllocString(L"Hello,你好");
學生:哦......我明白了。可是這么操作真夠麻煩的,有沒有簡單一些的方法?
老師:有呀,你可以使用現成的包裝類 CComVariant、COleVariant、_variant_t。比如上面三個問題就可以這樣書寫:CComVariant v1(100),v2(true),v3("Hello,你好"); 簡單了吧?!(注4)
學生:老師,我再問最後一個問題,我如何用 VARIANT 保存一個數組?
老師:這個問題很復雜,我現在不能告訴你,我現在告訴你怕你印象不深......(注5)
學生:~!@#$%^&*()......暈!
VARIANT 數據類型在文件OAIDL.IDL中定義如下:
struct tagVARIANT {
union {
struct __tagVARIANT {
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union {
ULONGLONG ullVal;
LONGLONG llVal;
LONG lVal;
BYTE bVal;
SHORT iVal;
FLOAT fltVal;
DOUBLE dblVal;
VARIANT_BOOL boolVal;
_VARIANT_BOOL bool;
SCODE scode;
CY cyVal;
DATE date;
BSTR bstrVal;
IUnknown * punkVal;
IDispatch * pdispVal;
SAFEARRAY * parray;
BYTE * pbVal;
SHORT * piVal;
LONG * plVal;
LONGLONG * pllVal;
FLOAT * pfltVal;
DOUBLE * pdblVal;
VARIANT_BOOL *pboolVal;
_VARIANT_BOOL *pbool;
SCODE * pscode;
CY * pcyVal;
DATE * pdate;
BSTR * pbstrVal;
IUnknown ** ppunkVal;
IDispatch ** ppdispVal;
SAFEARRAY ** pparray;
VARIANT * pvarVal;
PVOID byref;
CHAR cVal;
USHORT uiVal;
ULONG ulVal;
INT intVal;
UINT uintVal;
DECIMAL * pdecVal;
CHAR * pcVal;
USHORT * puiVal;
ULONG * pulVal;
ULONGLONG * pullVal;
INT * pintVal;
UINT * puintVal;
struct __tagBRECORD {
PVOID pvRecord;
IRecordInfo * pRecInfo;
} __VARIANT_NAME_4;
} __VARIANT_NAME_3;
} __VARIANT_NAME_2;
DECIMAL decVal;
} __VARIANT_NAME_1;
};
⑹ java中整除和浮點除什麼區別
被除數和除數都為整數即為整除,結果也為整數,如果有餘數,則忽略余數,比如
5/2結果為2。棚沖
被除數和除數只如卜要有一個是浮點數(小數)即為浮點除,結果為鏈橡殲浮點數,比如
5.0/2
結果為
2.5
⑺ 用JAVA語言編譯:數組中包含n個整數,從其中找出k個最小的數,寫出你能想到的最快的方法!!!
最快k*O(n)~O(n),將前K個數放入一個k的數組中,按序放,對K+1到N的數,依次如果比K數組總的小,將K中最大的取出,放入最小的數,一直維持K個,最後就是最小的K個。
import java.util.Arrays;
/**先給數值里的值進行從小到大排序,取從0到k-1索引的數組值
* @創建一個數組,包含11個元素,求5個最小的數
* @author Administrator
public class ArrayTest {
public static void main(String[] args) {
//最小元素的個數
int k=5;
//創建一個數組,
int[] arr = {1,3,45,33,67,12,88,11,46,32,89};
//操作數組的工具Arrays,sort()方法自動排序,由小到大
Arrays.sort(arr);
for(int i=0;i<k;i++){
System.out.println(arr[i]);
}
(7)javavariant類型擴展閱讀:
此處數組是程序中聲明的變數數組宏緩。它們不同於控制項蔽肆模數組,控制項數組是在設計時通過設置控制項的 Index 屬性規定的。變數數組總是連續的;與控制項數組不同雹兄的是,不能從一個數組的中部載入或卸載數組元素。
一個數組中的所有元素具有相同的數據類型(在C、C++、Java、pascal中都這樣。但也並非所有涉及數組的地方都這樣,比如在Visual Foxpro中的數組就並沒這樣的要求)。當然,當數據類型為 Variant 時,各個元素能夠包含不同種類的數據(對象、字元串、數值等等)。可以聲明任何基本數據類型的數組,包括用戶自定義類型和對象變數。
⑻ java中 locale類 及相關方法
在項目中經常要用到將字元串解析成Locale,但是沒有一個比較好用的類。
java本好廳身提供了3個構造函數
Locale(langugae)
locale(language,country)
Locale(String language, String country, String variant)
Apache 有個 LocaleUtils.toLocale(String language)但是不支型態持最後2個字元為小寫的,如:zh_CN支持, zh_cn就不支持。
[java] view plainprint?
import java.util.Locale;
public class LocaleUtil
{
private final static Locale DEFAULT_LOCALE = Locale.ENGLISH;
public final static String IETF_SEPARATOR = "-";
public final static String SEPARATOR = "_";
public final static String EMPTY_STRING = ""友租隱;
public static Locale toLocale( String language )
{
if( !StringUtil.isNullOrEmpty( language ) )
{
return langToLocale( language, SEPARATOR );
}
return DEFAULT_LOCALE;
}
public static Locale langToLocale( String lang , String separator )
{
if( StringUtil.isNullOrEmpty( lang ) )
{
return DEFAULT_LOCALE;
}
String language = EMPTY_STRING;
String country = EMPTY_STRING;
String variant = EMPTY_STRING;
int i1 = lang.indexOf( separator );
if ( i1 < 0 )
{
language = lang;
} else
{
language = lang.substring(0, i1);
++i1;
int i2 = lang.indexOf( separator, i1);
if (i2 < 0)
{
country = lang.substring(i1);
} else
{
country = lang.substring(i1, i2);
variant = lang.substring(i2+1);
}
}
if(language.length() == 2)
{
language = language.toLowerCase();
}else
{
language = EMPTY_STRING;
}
if(country.length() == 2)
{
country = country.toUpperCase();
}else
{
country = EMPTY_STRING;
}
if( (variant.length() > 0) &&
((language.length() == 2) ||(country.length() == 2)) )
{
variant = variant.toUpperCase();
}else
{
variant = EMPTY_STRING;
}
return new Locale(language, country, variant );
}
}
import java.util.Locale;
public class LocaleUtil
{
private final static Locale DEFAULT_LOCALE = Locale.ENGLISH;
public final static String IETF_SEPARATOR = "-";
public final static String SEPARATOR = "_";
public final static String EMPTY_STRING = "";
public static Locale toLocale( String language )
{
if( !StringUtil.isNullOrEmpty( language ) )
{
return langToLocale( language, SEPARATOR );
}
return DEFAULT_LOCALE;
}
public static Locale langToLocale( String lang , String separator )
{
if( StringUtil.isNullOrEmpty( lang ) )
{
return DEFAULT_LOCALE;
}
String language = EMPTY_STRING;
String country = EMPTY_STRING;
String variant = EMPTY_STRING;
int i1 = lang.indexOf( separator );
if ( i1 < 0 )
{
language = lang;
} else
{
language = lang.substring(0, i1);
++i1;
int i2 = lang.indexOf( separator, i1);
if (i2 < 0)
{
country = lang.substring(i1);
} else
{
country = lang.substring(i1, i2);
variant = lang.substring(i2+1);
}
}
if(language.length() == 2)
{
language = language.toLowerCase();
}else
{
language = EMPTY_STRING;
}
if(country.length() == 2)
{
country = country.toUpperCase();
}else
{
country = EMPTY_STRING;
}
if( (variant.length() > 0) &&
((language.length() == 2) ||(country.length() == 2)) )
{
variant = variant.toUpperCase();
}else
{
variant = EMPTY_STRING;
}
return new Locale(language, country, variant );
}
}
注意:
public class StringUtil
{
public static boolean isNullOrEmpty(String target) {
return target == null || "".equals(target);
}
}
⑼ java Variant數據類型轉換
可能要Variant的
SafeArray s=v.toSafeArray();//得到安全數組
再
String[] texts=s.toStringArray();
獲得字元串數組..
⑽ 怎麼用java調用用codesoft設計的條形碼文檔
現在代碼共享如下,僅供參考因為本人還不精通。
package
com.prodPrint;
import
java.io.File;
import
java.util.HashMap;
import
org.eclipse.swt.SWT;
import
org.eclipse.swt.ole.win32.OleAutomation;
import
org.eclipse.swt.ole.win32.OleControlSite;
import
org.eclipse.swt.ole.win32.OleFrame;
import
org.eclipse.swt.ole.win32.Variant;
import
org.eclipse.swt.widgets.Composite;
import
org.eclipse.swt.widgets.Display;
import
org.eclipse.swt.widgets.Shell;
import
com.lppx2.OleDispatch;
public
class
ActiveXPrinter
extends
Composite{
private
OleFrame
myFrame
=
new
OleFrame(this,
SWT.NONE);
//
Microsoft
Internet
Explorer
ProgID:
Shell.Explorer.2
//
Codesoft
ProgID
:
Lppx2.Application
private
String
progId
=
"Lppx2.Application";
private
OleControlSite
controlSite;
private
OleAutomation
automation;;
private
OleDispatch
appActiveDoc;
private
OleDispatch
appDocs;
File
currentFile;
public
ActiveXPrinter(Composite
parent,
int
style)
{
super(parent,
style);
myFrame
=
new
OleFrame(this,
SWT.NONE);
controlSite
=
new
OleControlSite(myFrame,
SWT.NONE,
progId);
automation
=
new
OleAutomation(controlSite);
}
public
void
print
(String
fileName)
{
currentFile
=
new
File(fileName);
initialize();
}
private
void
initialize()
{
try{
Variant
documents
=
(new
OleDispatch(automation)).Invoke("Documents",new
Variant[0]);
appDocs
=
new
OleDispatch(documents.getAutomation());
if
(!currentFile.canRead()
)
{
System.out.println("Unable
to
read
file
:
"
+
currentFile);
}
else
{
Variant
file[]
=
new
Variant[1];
file[0]
=
new
Variant(currentFile.getAbsolutePath());
if
(appDocs.Invoke("Open",
file)
!=
null)
{
System.out.println(currentFile.getAbsolutePath()
+
"
is
opened
now");
}
else
{
System.out.println("Unable
to
open
"
+
currentFile.getAbsolutePath());
}
Variant
activeDocumentV
=
(new
OleDispatch(automation)).Invoke(
"ActiveDocument",
new
Variant[0]);
try
{
appActiveDoc
=
new
OleDispatch(activeDocumentV.getAutomation());
}
catch
(Exception
excpt)
{
}
Variant[]
quantity
=
new
Variant[1];
quantity[0]
=
new
Variant(1);
if
(appActiveDoc.Invoke("PrintDocument",
quantity)
!=
null)
System.out.println("Print
OK");
else
{
System.out.println("Unable
to
print
!");
}
}
}catch(Exception
excpt)
{
System.out.println("You
can't
print
anything
until
a
document
is
opened
!");
excpt.printStackTrace();
return;
}
}
public
static
void
main(String[]
args)
{
Display
display
=
Display.getDefault();
Shell
shell
=
new
Shell(display);
new
ActiveXPrinter(shell,
0).print("C:\Document1.Lab");
while
(!shell.isDisposed())
{
if
(!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
}