0% found this document useful (0 votes)
67 views

Software Technologies Java Basics

Uploaded by

Krasimir Angelov
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
67 views

Software Technologies Java Basics

Uploaded by

Krasimir Angelov
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 50

Java Basics

Java Syntax, Conditi ons, Loops,


Methods, Objects, Collecti ons
J ava
Basics

SoftUni Team
Technical Trainers
Software University
http://softuni.bg
Table of Contents
1. Welcome to Java
2. Variables and Operators
3. Conditions: if-else, switch
4. Loops: for, while, do-while, …
5. Methods, parameters, return value
6. Objects and Classes
7. Arrays and Collections:
ArrayList, Map, Set
8. Lambda Expressions and Stream API 2
Have a Question?

sli.do
#3295
3
Welcome to Java
 Java is a statically-typed, object-oriented
programming language
 Very similar to C#, but less flexible

 Programs are compiled before execution

 Variables' types cannot be changed

 In contract, JavaScript and PHP are


dynamically-typed (scripting) languages
 Can work in interactive mode (REPL)

 No compilation, just execute commands 4


Hello World in Java
HelloJava class always
stays in a file named
HelloJava.java

HelloJava.java The { stays at


the same line
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello Java!");
} Program entry point:
} main() method

5
Installing Java
 Download and install Java 8 SDK (JDK 8)
 http://oracle.com/technetwork/java/javase/downloads/

 Provides runtime environment (JRE) + compilers + tools

 JRE (Java Runtime Environment)


 https://java.com/en/download/

 JRE is for end-users, not for devs


 Developers should use JDK

6
Eclipse for Java EE
 Eclipse is open-source Java /
Java EE / PHP / C++ IDE

 Install Eclipse for Java EE


7
IntelliJ IDEA
 JetBrains IntelliJ IDEA
 Powerful Java IDE

 Community edition
(free)
 Ultimate edition
(commercial)

8
Variables and Operators in Java
Play with Java online:
 Define variables by their type www.javarepl.com
int i = 5; double d = 3; // i is integer, d is double
System.out.println(i + " ; " + d); // 5 ; 3.0
d = i * d; d++; // d = 16.0 The ; separates
System.out.println(d + 1); // 17.0 multiple statements

String str = "Hello";


The %s is a string placeholder
str = str + " Java";
System.out.printf("str = %s", str); // str = Hello Java

System.out.print(s); // Compilation error: unknown symbol s


9
Problem: Calculate Expression
 Write a Java program to calculate and print the value of the
following expression: [(30 + 21) * 1/2 * (35 - 12 - 1/2)]2
 Sample solution:

double val = (30 + 21) * 1/2.0 * (35 - 12 - 1/2.0);


double valSquare = val * val;
System.out.println(valSquare);

Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/264#0 10


Problem: Sum Two Numbers
 Write a Java program to sum two real numbers:
import java.util.Scanner;
public class SumTwoNumbers {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double num1 = scan.nextDouble();
double num2 = scan.nextDouble();
System.out.printf("Sum = %.2f", num1 + num2);
}
}
Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/264#1 11
Conditions: if-else Statement
 Java implements the classical if / if-else statements:

int number = 5;
if (number % 2 == 0) {
System.out.println("Even number");
}
else {
System.out.println("Odd number");
}

12
Beware of Comparing Strings

String s = "sho";
if ("Pesho" == "Pe" + s) {
System.out.println("Здрасти, Пешо!");
}

13
Problem: Three Integers Sum
 You are given 3 integers
 Check whether the sum of two of them is equal to the third

 Print the output in format a + b = c (where a ≤ b)

8 15 7 7 + 8 = 15 3 8 12 No

-5 -3 -2 -3 + -2 = -5 0 0 0 0 + 0 = 0

Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/264#2 14


Solution: Three Integers Sum
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();
if (!checkThreeIntegers(num1, num2, num3) &&
!checkThreeIntegers(num3, num1, num2) &&
!checkThreeIntegers(num2, num3, num1))
System.out.println("No");
}
Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/264#2 15
Solution: Three Integers Sum (2)

static boolean checkThreeIntegers(


int num1, int num2, int sum) {
if (num1 + num2 != sum)
return false;
if (num1 <= num2)
System.out.printf("%d + %d = %d\n", num1, num2, sum);
else
System.out.printf("%d + %d = %d\n", num2, num1, sum);
return true;
}

Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/264#2 16


The switch-case Statement
 Selects for execution a statement from a list depending on the
value of the switch expression
int day = 3;
switch (day) {
case 1: System.out.println("Monday"); break;
case 2: System.out.println("Tuesday"); break;
case 3: System.out.println("Wednesday"); break;

case 7: System.out.println("Sunday"); break;
default: System.out.println("Error!"); break;
}
17
Loops: for, while, do-while, …
 The for / while / do-while loops work as in C++, C# and Java
for (int i = 0; i <= 10; i++)
System.out.println(i); // 0 1 2 3 4 … 10

int count = 1;
while (count < 1024)
System.out.println(count *= 2); // 2 4 8 … 1024

String s = "ha";
do { System.out.println(s); s = s + s; }
while (s.length() < 10); // ha haha hahahaha
18
Problem: Sum N Integers in Java
import java.util.Scanner; 5
public class SumIntegers { 10
public static void main(String[] args) { 20
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); 30
long sum = 0; 40
for (int i = 0; i < n; i++) -1
sum += scan.nextInt();
System.out.println("Sum = " + sum);
}
} 99
Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/264#3 19
Problem: Symmetric Numbers
 Write a Java program that finds and prints all symmetric
numbers in the range [1…n]
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99
101 111 121 131 141 151 161 171 181 191 202
212 222 232 242 252 262 272 282 292 303 313
750 323 333 343 353 363 373 383 393 404 414 424
434 444 454 464 474 484 494 505 515 525 535
545 555 565 575 585 595 606 616 626 636 646
656 666 676 686 696 707 717 727 737 747
Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/264#4 20
Solution: Symmetric Numbers
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for (int i = 1; i <= n; i++)
if (isSymmetric("" + i))
System.out.print(i + " ");
}
static boolean isSymmetric(String str) {
for (int i = 0; i < str.length() / 2; i++)
if (str.charAt(i) != str.charAt(str.length() - i - 1))
return false;
return true;
}
Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/264#4 21
Methods in Java
 Methods in Java hold a named piece of code
 Can take parameters and return a result (strongly typed!)

 Similar to functions in C / PHP / JS and methods in C++ / C#

static int multiply(int a, int b) { static makes the


return a * b; method callable
} from main()

System.out.println(multiply(2, 3)); // 6 == 2 * 3
System.out.println(multiply(5)); // Compilation error

22
Objects
 In programming objects holds a set of named values
 E.g. a rectangle object holds width and height

Object name
rectangle
width = 5 Object
height = 4 properties
The new operator
 Creating a rectangle object: creates a new object

Rectangle rectangle = new Rectangle(5, 4);


23
Defining Classes
Rectangle.java
public class Rectangle {
private int width; Class declaration
private int height; Fields
public Rectangle(int width, int height) {
this.width = width; Getters
this.height = height; Constructor and
}
setters
public int getWidth() { return width; }
public void setWidth(int width) { this.width = width; }
public int getHeight() { return height; }
public void setHeight(int height) { this.height = height; }
}
24
Methods in Classes
Rectangle.java
public class Rectangle {
… Class method
public long area() { (non-static)
return this.width * this.height;
}
@Override
public String toString() {
return String.format(
toString() returns
"Rect[width=%d, height=%d]", a text representation
this.width, this.height); of the object
}
}
25
Using Classes
Rectangle smallRect = new Rectangle(5, 4);
System.out.println(smallRect); // Rect[width=5, height=4]
System.out.println("Area: " + smallRect.area()); // Area: 20

Rectangle bigRect = new Rectangle(100, 80);


System.out.println(bigRect); // Rect[width=100, height=80]
System.out.println("Area: " + bigRect.area()); // Area: 8000

bigRect.setWidth(bigRect.getWidth() * 2);
bigRect.setHeight(bigRect.getHeight() * 2);
System.out.println(bigRect); // Rect[width=200, height=160]
System.out.println("Area: " + bigRect.area()); // Area: 32000
26
Interfaces
 Interfaces define a set of methods to be implemented later

public interface IRectangle {


int getWidth();
void setWidth(int width);
int getHeight();
void setHeight(int height);
long area();
}

27
Implementing an Interface

public class Rectangle


implements IRectangle {
public int getWidth() { … }
public void setWidth(int width) { … }
public int getHeight() { … }
public void setHeight(int height) { … }
public long area() { … }
}

28
Strings
 Strings in Java
 Know their number of characters: length()
 Can be accessed by index: charAt(0 … length()-1)

 Reference types
 Stored in the heap (dynamic memory)
 Can have null value (missing value)
 Strings cannot be modified (immutable)
 Most string operations return a new String instance
 StringBuilder class is used to build stings 30
Strings – Examples
String str = "SoftUni";

System.out.println(str);
for (int i = 0; i < str.length(); i++) {
System.out.printf("str[%d] = %s\n", i, str.charAt(i));
}

System.out.println(str.indexOf("Uni")); // 4
System.out.println(str.indexOf("uni")); // -1 (not found)
System.out.println(str.substring(4, 7)); // Uni
System.out.println(str.replace("Soft", "Hard")); // HardUni
System.out.println(str.toLowerCase()); // softuni
System.out.println(str.toUpperCase()); // SOFTUNI

31
Strings – Examples (2)
String firstName = "Steve";
String lastName = "Jobs";
int age = 56;
System.out.println(firstName + " " + lastName +
" (age: " + age + ")"); // Steve Jobs (age: 56)
String allLangs = "C#, Java; HTML, CSS; PHP, SQL";
String[] langs = allLangs.split("[, ;]+");
for (String lang : langs) {
System.out.println(lang);
}
System.out.println("Langs = " + String.join(", ", langs));
System.out.println(" \n\n Software University ".trim());

32
Arrays in Java
// Array holding numbers
int[] numbers = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(numbers));
// Array holding strings
String[] weekDays = {"Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"};
// Array of mixed data (objects)
Object[] mixedArr = {1, new Date(), "hello"};
// Array of arrays of strings (matrix)
String[][] matrix = {
{"0,0", "0,1", "0,2"},
{"1,0", "1,1", "1,2"}};
33
Processing Array Elements
String[] capitals =
{"Sofia", "Berlin", "London", "Paris", "Moscow"};
capitals[0] = "SOFIA";
capitals[4] = null;
System.out.println(Arrays.toString(capitals));
// [SOFIA, Berlin, London, Paris, null]
for (String capital : capitals)
System.out.println(capital); Traditional foreach loop

for (int i = 0; i < capitals.length; i++)


System.out.println(capitals[i]);
Traditional for-loop
34
Problem: Largest 3 Numbers
 Write a program to read an array of numbers and find and print
the largest 3 of them

10 30 15 20 50 5 20 30 10 5 20 3 20

50 30 20 30 20 20 20 10

Check your solution here: TODO 35


Solution: Largest 3 Numbers

int[] nums = Arrays.stream(


new Scanner(System.in).nextLine().split(" "))
.mapToInt(Integer::parseInt).toArray();
Arrays.sort(nums);
int count = Math.min(3, nums.length);
for (int i = 0; i < count; i++)
System.out.print(nums[nums.length - i - 1] + " ");

Check your solution here: TODO 36


Collections: ArrayList<String>
ArrayList<String> names = new ArrayList<String>() {{
add("Peter");
add("Maria");
add("Katya");
add("Todor");
}};
names.add("Nakov"); // Peter, Maria, Katya, Todor, Nakov
names.remove(0); // Maria, Katya, Todor, Nakov
names.remove(1); // Maria, Todor, Nakov
names.remove("Todor"); // Maria, Nakov
names.addAll(Arrays.asList("Alice", "Tedy"));
// Maria, Nakov, Alice, Tedy
names.add(3, "Sylvia"); // Maria, Nakov, Alice, Sylvia, Tedy
names.set(2, "Mike"); // Maria, Nakov, Mike, Sylvia, Tedy
System.out.println(names);
37
Collections: ArrayList<Integer>

// This will not compile!


ArrayList<int> intArr = new ArrayList<int>();

ArrayList<Integer> nums = new ArrayList<>(


Arrays.asList(5, -3, 10, 25));
nums.add(55); // 5, -3, 10, 25, 55
System.out.println(nums.get(0)); // 5
System.out.println(nums); // [5, -3, 10, 25, 55]
nums.remove(2); // 5, -3, 25, 55
nums.set(0, 101); // 101, -3, 25, 55
System.out.println(nums); // [101, -3, 25, 55]
38
HashSet<E> and TreeSet<E>

Set<String> set = new TreeSet<String>();


set.add("Pesho");
set.add("Tosho");
set.add("Pesho");
set.add("Gosho");
set.add("Maria");
set.add("Alice");
set.remove("Pesho");
System.out.println(set); // [Alice, Gosho, Maria,
Tosho]
39
Colections: Maps in Java
 Maps in Java keep unique <key, value> pairs
 HashMap<K, V>
 Keeps a map of elements in a hash-table
 The elements are randomly ordered (by their hash code)
 TreeMap<K, V>
 Keeps a set of elements in a red-black ordered search tree
 The elements are ordered incrementally by their key

40
HashMap<K, V> – Examples
 Counting words occurrences in a list:
String[] words = { "yes", "hi", "hello", "hi", "welcome",
"yes", "yes", "welcome", "hi", "yes", "hello", "yes" };
Map<String, Integer> wordsCount = new HashMap<String, Integer>();
for (String word : words) {
Integer count = wordsCount.get(word);
if (count == null) {
count = 0;
}
wordsCount.put(word, count+1);
}
System.out.println(wordsCount); // {hi=3, yes=5, hello=2, welcome=2}
41
TreeMap<K, V> – Examples
 Students and their grades

HashMap<String, ArrayList<Integer>> grades = new HashMap<>();


grades.put("Peter", new ArrayList<>(Arrays.asList(5)));
grades.put("George", new ArrayList<>(Arrays.asList(5, 5, 6)));
grades.put("Maria", new ArrayList<>(Arrays.asList(5, 4, 4)));
grades.get("Peter").add(6);
grades.get("George").add(6);

for (String key : grades.keySet()) {


System.out.println("" + key + " -> " + grades.get(key));
}

42
Problem: Sums by Town
 You are given a sequence of lines, each holding town + income
Sofia | 200
Towns can appear
Varna | 120
multiple times
Pleven | 60
Varna | 70

 Write a Java program to sum the incomes for each town


Pleven -> 60
Order the towns
Sofia -> 200
by name
Varna -> 190
Check your solution here: TODO 43
Solution: Sums by Town
TODO

Check your solution here: TODO 44


Functional Programming and Lambda
 Functional programming  Imperative programming
 Program by invoking  Describe the algorithm by
sequences of functions programming constructs
int[] nums = {1, 2, 3, 4, 5}; int[] nums = {1, 2, 3, 4, 5};
Arrays.stream(nums)
.forEach(e -> { for (int num : nums) {
System.out.println(e);
System.out.println(num);
});
}
// or
Arrays.stream(nums) .forEach(Syste
m.out::println);

45
Collections and Streams: Map and Collect

public static void main(String[] args) {


List<String> numbers =
Arrays.asList("1", "2", "3", "4", "5");

List<Integer> parsedNumbers = numbers.stream()


.map(Integer::parseInt)
.map(i -> 2*i)
.collect(Collectors.toList());
}

46
Collection Querying and Traversing

List<String> names = new ArrayList<>();


names.add("peter"); ///…
names.stream()
.filter(n -> n.length() > 8)
.forEach(System.out::println);

Optional<String> first =
names.stream()
.findFirst();

System.out.println(first.get());
47
Summary
 Java is a statically-typed language
 Java programs consist of classes

 Program logic (variables, conditions, loops) are


similar to C# / C++ / PHP / JavaScript
 Arrays in Java hold sequences of elements
 Java collections: list, set, map { key  value}
 Objects in Java are class instances
 Java is object-oriented language: relies on
objects, classes, interfaces, methods, etc. 49
Java Basics

? ?
?

sti o n s ?
e
?

Qu ?
?

?
https://softuni.bg/courses/software-technologies
License
 This course (slides, examples, demos, videos, homework, etc.)
is licensed under the "Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International"
license

51
Free Trainings @ Software University
 Software University Foundation – softuni.org
 Software University – High-Quality Education,
Profession and Job for Software Developers
 softuni.bg
 Software University @ Facebook
 facebook.com/SoftwareUniversity
 Software University @ YouTube
 youtube.com/SoftwareUniversity
 Software University Forums – forum.softuni.bg

You might also like