Java: Difference between revisions
Jump to navigation
Jump to search
(→Debug) |
m (→Debug) |
||
Line 148: | Line 148: | ||
Some sample code: |
Some sample code: |
||
<source lang=" |
<source lang="java"> |
||
private static final String ANSI_PURPLE = (char) 27 + "[35m"; |
private static final String ANSI_PURPLE = (char) 27 + "[35m"; |
||
private static final String ANSI_NONE = (char) 27 + "[0m"; |
private static final String ANSI_NONE = (char) 27 + "[0m"; |
Revision as of 15:38, 12 October 2011
Other pages
Links
java.exe Command-Line
-Djava.library.path=<dllpath>
- Set path to find DLL Libraries
-jar <jarfile>
- Set jar file to load (should contain main())
java -Djava.library.path=.\var -jar "$(MYROOT)\var\main.jar"
Sample Program
- Create a file HelloWorld.java, with content:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
for (int i = 0; i < args.length; i++)
System.out.print(0 == i ? args[i] : " " + args[i]);
System.out.println();
}
}
- Compile (javac must be in the path):
javac HelloWorld.java
- Run:
java HelloWorld
Syntax 1.4
Arrays
- Index is 0-based
- Array base type can be any primitive type or reference types.
new
allocates room for primitive types, or for references (not for object instance themselves).- After creation, arrays cannot grow or shrink. For dynamic arrays, consider using
ArrayList
class.
// Declaration
int [] arrayOfInts; // preferred declaration style
int arrayOfInts []; // ... c-style
// Creation and Initialization
int arrayOfInts [] = new int [42]; // declaration and creation (set to 0)
arrayOfInts[0] = 69;
String [] someStrings = new String [ 3 ]; // ... idem (set to null)
String [] someStrings = { null, null, null }; // ... same as above
String [] someStrings = { "hello", new String(), someStuff.toString(), null };
// Anonymous arrays
setPets ( new Animal [] { new Dog("gray"), new Cat("grey"), new Cat("orange") });
// Get array length
int aLen = arrayOfInts.length
Syntax 1.5
For loops
Foreach loops (available since 1.5) [1]:
- More readable
- Series of values
- Arrays and Collections
- Applies to Iterable<E>.
But
- Only access.
- Only single structure.
- Only single element.
- Only forward.
- At least Java 5.
FOR EACH loop | Equivalent FOR loop |
---|---|
for (type var : arr) {
body-of-loop
}
|
for (int i = 0; i < arr.length; i++) {
type var = arr[i];
body-of-loop
}
|
for (type var : coll) {
body-of-loop
}
|
for (Iterator<type> iter = coll.iterator(); iter.hasNext(); ) {
type var = iter.next();
body-of-loop
}
|
Miscellaneous
- Class Literal
- A class literal is an expression consisting of the name of a class, interface, array, or primitive type followed by a
.
and the tokenclass
. The type of a class literal isClass
. It evaluates to the Class object for the named type (or for void) as defined by the defining class loader of the class of the current instance. - Eg:
public class MyClass //...
//...
printf ("Class name is %s\n",MyClass.class.getName());
- Throwable.getStackTrace()
- Could be used to get the name of current class / methods for debug...
Debug
- References
Logging:
- http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/
- http://commons.apache.org/logging/
- http://logging.apache.org/log4j/1.2/index.html
Dynamic Proxy:
- Java Trace
- cfr [2]
- Profilers
- Aspect-Oriented Programming
Some sample code:
private static final String ANSI_PURPLE = (char) 27 + "[35m";
private static final String ANSI_NONE = (char) 27 + "[0m";
public static String getMethodName()
{
return getMethodName(1);
}
public static String getMethodName(int idx)
{
return new Throwable().getStackTrace()[1].getMethodName();
}
public static String getFileMethodLine()
{
return getFileMethodLine(1);
}
public static String getFileMethodLine(int idx)
{
StackTraceElement e = new Throwable().getStackTrace()[idx];
//return e.getClassName() + "." + e.getMethodName() + "(" + e.getFileName() + ":" + e.getLineNumber() + ")"; // Java like
return e.getFileName() + " " + e.getMethodName() + ":" + e.getLineNumber(); // C like
}
public static void debug(String s)
{
System.out.println(ANSI_PURPLE + getFileMethodLine(2) + ANSI_NONE + " " + s);
}
References
String Integer.toHexString(byte); // Convert an integer to string in hexadecimal
"00" + Integer.toHexString( i ) // Pad with leading zeros (then take rightmost characters)
String.format("%04x",0x2a);
//Prepend 0 if needed
String hex = Integer.toHexString(abyte & 0xff);
StringBuffer hexbuf = new StringBuffer();
if (hex.length() == 1) hexbuf.append('0');
hexbuf.append(hex);
//Prepend 0 if needed
String hex=Integer.toHexString(aInt); // Assume 0<= aInt <= 255 (i.e. positive!)
System.out.print((hex.length()>1? "" : "0") + hex + ", ");