# 50.001 W1L1 (Introduction to Java I)
## Portable
Java can be run on most devices, unlike python.
Since Java is a high level programming language, it has to be translated into machine-language before the program is executed by a **compiler**.
The codes that are translated to the machine-language are **machine specific**.
> Codes compiled on a Windows machine will not run on a Linux machine.
To avoid this, Java compiles the ==.java== code into a **Bytecode** with a ==.class== extension. This bytecode can then be run on any machine with a **JVM** (Java Virtual Machine).
> JVM is an interpreter
## OOP
Java is an Object-Oriented Program (OOP). It is necessary to at least have one class for every module.
> Hello world in Java
```java=
public class MyClass {
public static void main(String [] args){
System.out.println("Hello world");
}
}
```
## Android Studio
Before running the code, there must be a few configurations made to the Android Studio:
1. Go to Run > Edit Configurations
2. Add a new configuration
3. Choose the main class as the entrypoint
## Variables
Variable definition is as follows:
```
type variable_name = initial value
```
When not explicitly stated, variables are by default **local**
```java=
public static void main(String[] args){
int a = 1; // a is a local int
double b = 2.1 // b is a local double
}
```
## Array
Array declaration is as follows:
``` type[] array_name;```
``` array_name = new type[size];```
```java=
public static void main(String [] args){
int[] c;
c = new int[10];
for(int i =0;i<4;i++){
c[i] = i;
System.out.println("Element is: "+c[i]);
}
}
```
Java will throw an *out of bounds* exception when we try to access the invalid index.
## String
String is **not** an array of characters, but it can be converted from an array of characters easily.
```java=
public static void main(String[] args){
String d = "Hello world";
int x = d.length(); //returns the length of the String
char z = 'x';
char[] m = {'H','e','l','l','o'};
d = new String(m);
//d = "Hello"
}
```
## Conditionals
Once the first condition is true, Java will skip the rest of the "else"s.
```java=
if(condition1){
// action1;
}
else if(condition2){
// action2;
}
else {
// action3;
}
```
## Loop
For loop syntax:
```java=
for (int i=0;i<x;i++){
//looping_action;
}
```
## Method
Method is the same as function in other languages
The main method (entrypoint within the class) is called "main".
```java=
public static void main (String [] args){
//String [] args is to specify the input arguments that the user input
printMsg("hello world",4);
System.out.println("The sum is: "+addStuff(2,10));
// java can concatenate int into string
}
public static void printMsg(String message, int b){
for (int i =0;i<b;i++) {
System.out.println("The message printed is: " + message);
}
}
public static int addStuff(int a, int b){
return a+b;
}
}
```