A good quote: leave the ego behind, be eager to learn.
Java version of hello world is like this:
import java.util.*;
public class vanilla {
public static void main(String args[]) {
System.out.println("hello world");
}
}
Notes:
java.util
is the basic package of Java, which contains many useful classes such as Arrays, ArrayList, Date, HashMap, Hashtable, LinkedList, Random, Set, List. A full description is here.- class is usually public so it can be called. The class name is the same with the java file name. Because we usually have multiple classes work together, a project is build.
- There will be a
main
method, which is also usually public. So the java application runs by the main method. System
is one of the classes injava.lang
package, which is the default. A full list of the package is here.
Because Java is compile-run 2-step language, so:
- we don’t have interactive IDE like Jupyter notebook, Matlab or R studio.
- It is a production language. It is static type so you declare data type of each variable.
- It trades development time for run time.
For convenience, I only write the code snippet inside the main method.
2 types of for-loop and array
int [] numbers = {10, 20, 30, 40, 50}; //list of int
for(int x : numbers ) {
System.out.print( x +"\t");
}
System.out.print("\n");
String [] names = {"James", "Larry", "Tom", "Lacy"}; // list of String
for( String name : names ) {
System.out.print( name + ",");
} // enumerate style: enhanced
for (int i=0; i<5;i++){
System.out.println(i);
} // incremental style: traditional
conditional operator
Exp1 ? Exp2 : Exp3;
math
System.out.printf("The value of e is %.4f%n", Math.E);
System.out.printf("sqrt(%.3f) is %.3f%n", x, Math.sqrt(2));
note:
printf
is formatted print so %.3f
means the float variable is formatted as 3 digits after the decimal point.%n
is used to create a new line.string
System.out.print("hello".length());
String Str = new String("Welcome-to-Tutorialspoint.com");
for (String word: Str.split("-")) {
System.out.println(word);
} // iterate to print an array of string
s.substring(0,2) // get first 2 letters.
pass array to method
public static void printArray(int[] array) {
for (int a :array) {
System.out.print(a + " ");
}
}
printArray(new int[]{3, 1, 2, 6, 4, 2});
regular expression
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches {
public static void main( String args[] ) {
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\\d+)(.*)"; // 3 groups
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
}else {
System.out.println("NO MATCH");
}
}
}
args input
public class CommandLine {
public static void main(String args[]) {
for(String s:args) {
System.out.println(s);
}
}
}
file IO
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class vanilla {
public static void main(String args[]) throws IOException{
FileReader in = new FileReader("input.txt");
FileWriter out = new FileWriter("output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
}
}
java.io
package has a lot of paired classes to perform input and output in terms of streams.- Byte Streams: 8-bit bytes. FileInputStream, FileOutputStream
- Character Streams: 16-bit unicode. FileReader, FileWriter
- Standard Streams: InputStreamReader, System.out.println
Directories operation
import java.io.File;
...
File d = new File("/tmp/user/java/bin");
d.mkdirs(); //create a directory and all parent directory
File a = new File("/tmp");
String[] paths = a.list(); // list all files, directories
for (String path: paths){
System.out.println(path);
}
read and parse csv file
This is for a simple case, which you use
split()
to parse the csv file.String csvFile = "country.csv";
String line = "";
BufferedReader buffer = null;
try {FileReader file = new FileReader(csvFile);
buffer= new BufferedReader(file);
while ((line = buffer.readLine()) != null) {
String[] words = line.split(",");
for (String s:words ) {
if (s.equals("\"China\"")){System.out.println("hello");}
System.out.print(s+"\t");
//System.out.print(s.contains("China"));
}
System.out.println();
}
} catch (IOException e) {e.printStackTrace();}
array vs ArrayList
- array such as
int[] nums= int[5]
has fixed size, but arraylist such asArrayList<Integer> nums = new ArrayList<Interger>()
has elastic size. - array is easy to use and storage efficient but has limited functionality
int[] nums= {1,2,3};
System.out.println(nums.length);
ArrayList<Integer> n = new ArrayList<Integer>();
n.add(1);
n.add(2);
System.out.println(n.size());
double array size:
int [] nums = new int[100];
int size = 0; // track of current size
value [size] = value;
size++;
if (size>= nums.length){
nums = Arrays.copyOf(nums, 2*nums.length);
} // from java.util.Arrays package
System.out.println(Arrays.toString(nums)) // use string to print
Note:
- String can be converted to chars by
s.toCharArray()
, or you access individual char usings.chartAt(i)
- length of string is
s.length()
but length of array isa.length
, length of ArrayList isal.size()
scanner
import java.util.Scanner;
System.out.println("Enter your username: ");
Scanner scanner = new Scanner(System.in);
String username = scanner.nextLine();
System.out.println("Your username is " + username);
You can use
while(scanner.hasNextDouble())
to check user input for continuous input.add external jar in intell j
file ->project structure -> modules -> dependecne => +JARs
java system property
java.util.Properties props = System.getProperties();
System.out.println(props.get("os.name"));
System.out.println(props.get("os.version"));
System.out.println(props.get("java.vendor"));
System.out.println(props.get("java.version"));
System.out.println(props.get("java.class.path"));
IDE
IntelliJ is my favourite. BlueJ is also nice due to its class-module visualization.
Downloading BlueJ
Mac
Windows
Linux
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.