Presented by: Mojtaba Khezrian. Agenda Object Creation Object Storage More on Arrays Parameter Passing For Each VarArgs Spring 2014Sharif University of.

Slides:



Advertisements
Similar presentations
Topic 10 Java Memory Management. 1-2 Memory Allocation in Java When a program is being executed, separate areas of memory are allocated for each class.
Advertisements

Web Application Development Slides Credit Umair Javed LUMS.
1 COSC2767: Object-Oriented Programming Haibin Zhu, Ph. D. Associate Professor of CS, Nipissing University.
CSCI 1100/ , 6.2, 6.4 April 12, 15, 17.
CERTIFICATION OBJECTIVES Use Class Members Develop Wrapper Code & Autoboxing Code Determine the Effects of Passing Variables into Methods Recognize when.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Road Map Introduction to object oriented programming. Classes
1. 2 Introduction to Methods  Type of Variables  Static variables  Static & Instance Methods  The toString  equals methods  Memory Model  Parameter.
Arrays  Writing a program that uses a large amount of information.  Such as a list of 100 elements.  It is not practical to declare.
Rossella Lau Lecture 8, DCO10105, Semester B, DCO10105 Object-Oriented Programming and Design  Lecture 8: Polymorphism & C++ pointer  Inheritance.
Evan Korth New York University Computer Science I Classes and Objects Professor: Evan Korth New York University.
Terms and Rules Professor Evan Korth New York University (All rights reserved)
Memory and C++ Pointers.  C++ objects and memory  C++ primitive types and memory  Note: “primitive types” = int, long, float, double, char, … January.
1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation –The new operator –The delete operator –Dynamic.
Sanjay Goel, School of Business, University at Albany, SUNY 1 MSI 692: Special Topics in Information Technology Lecture 4: Strings & Arrays Sanjay Goel.
1 Procedural Concept The main program coordinates calls to procedures and hands over appropriate data as parameters.
Pointers CSE 2451 Rong Shi.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
3.1 Documentation & Java Language Elements Purpose of documentation Assist the programmer with developing the program Assist other programers who.
11 Values and References Chapter Objectives You will be able to: Describe and compare value types and reference types. Write programs that use variables.
EE4E. C++ Programming Lecture 1 From C to C++. Contents Introduction Introduction Variables Variables Pointers and references Pointers and references.
More with Methods (parameters, reference vs. value, array processing) Corresponds with Chapters 5 and 6.
Chapter 2: Everything is an Object ● C++ has many non object oriented features inherited from C. It is a hybrid language meaning that it support different.
The basics of the array data structure. Storing information Computer programs (and humans) cannot operate without information. Example: The array data.
1 © 2002, Cisco Systems, Inc. All rights reserved. Arrays Chapter 7.
Computer Science and Software Engineering University of Wisconsin - Platteville 2. Pointer Yan Shi CS/SE2630 Lecture Notes.
Review of ICS 102. Lecture Objectives To review the major topics covered in ICS 102 course Refresh the memory and get ready for the new adventure of ICS.
Sadegh Aliakbary. Copyright ©2014 JAVACUP.IRJAVACUP.IR All rights reserved. Redistribution of JAVACUP contents is not prohibited if JAVACUP.
Constructors CMSC 202. Object Creation Objects are created by using the operator new in statements such as… The following expression invokes a special.
12-CRS-0106 REVISED 8 FEB 2013 CSG2H3 Object Oriented Programming.
Everything Is an Object Manipulate objects with references The identifier you manipulate is actually a “reference” to an object. Like a television.
Questions? Suggestions?. References References Revisited What happens when we say: int x; double y; char c; ???
Peyman Dodangeh Sharif University of Technology Fall 2013.
Pointers and Dynamic Memory Allocation Copyright Kip Irvine 2003, all rights reserved. Revised 10/28/2003.
Dynamic memory allocation and Pointers Lecture 4.
Sadegh Aliakbary Sharif University of Technology Spring 2011.
RECITATION 4. Classes public class Student { } Data Members public class Student { private String name; public String id; }
RUN-Time Organization Compiler phase— Before writing a code generator, we must decide how to marshal the resources of the target machine (instructions,
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Copyright Curt Hill Variables What are they? Why do we need them?
Computer Organization and Design Pointers, Arrays and Strings in C Montek Singh Sep 18, 2015 Lab 5 supplement.
Objects and Variables Local variables – Confined to single context: allocated on stack – Primitive types such as int or object references – Must be initialized.
CMSC 202 Advanced Section Classes and Objects: Object Creation and Constructors.
Peyman Dodangeh Sharif University of Technology Spring 2014.
CS 180 Recitation 7 Arrays. Used to store similar values or objects. An array is an indexed collection of data values of the same type. Arrays are the.
Introduction To Objects Oriented Programming Instructor: Mohammed Faisal.
The const Keyword Extreme Encapsulation. Humble Beginnings There are often cases in coding where it is helpful to use a const variable in a method or.
CSC 142 F 1 CSC 142 References and Primitives. CSC 142 F 2 Review: references and primitives  Reference: the name of an object. The type of the object.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
Chapter 5: Arrays in Java. The objectives of this chapter are:  1. To discuss the creation and use of Arrays.   2. To continue to use the String class.
Objects and Memory Mehdi Einali Advanced Programming in Java 1.
Lecture 3: Introduction to Object and Classes Michael Hsu CSULA.
Lecture 3: Introduction to Object and Classes Michael Hsu CSULA.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
Computer Organization and Design Pointers, Arrays and Strings in C
Java Memory Management
Intro To Classes Review
Java Review: Reference Types
Advanced Programming Behnam Hatami Fall 2017.
CSC 253 Lecture 8.
CSC 253 Lecture 8.
اشیاء در جاوا Java Objects
Pointers, Dynamic Data, and Reference Types
Memory Allocation CS 217.
Fall 2018 CISC124 2/22/2019 CISC124 Quiz 1 This Week. Topics and format of quiz in last Tuesday’s notes. The prof. (me!) will start grading the quiz.
Java Programming Language
Winter 2019 CMPE212 5/10/2019 CMPE212 – Reminders
Pointers, Dynamic Data, and Reference Types
Corresponds with Chapter 5
SPL – PS2 C++ Memory Handling.
Presentation transcript:

Presented by: Mojtaba Khezrian

Agenda Object Creation Object Storage More on Arrays Parameter Passing For Each VarArgs Spring 2014Sharif University of Technology2

public class Student{ private String name; public void setName(String n) { name = n; } public void Research(){ System.out.println(“Studing!"); } } Student d = new Student();  Object Creation (instantiation) d.setName(“Ali");  changing the object’s state d.research();  passing message to object d is an object d is a reference to an object Spring 2014Sharif University of Technology3 Class Declaration

Object Memory Remember : an object has state, behavior and identity Each object is stored in memory Memory address ≈ object identity Memory content  object state The behavior of an object is declared in its class Class declaration is also stored in memory But class declaration is stored once for each class For each object a separate piece of memory is needed To store its state Spring 2014Sharif University of Technology4

Object References When you declare an object, you declare its reference String s; Book b; Exception: ? Primitive types Primitive types are not actually objects They can not have references Java references are different from C++ pointers Java references are different from C++ references Spring 2014Sharif University of Technology5

new Operator new creates a new object from specified type new String(); new Book(); new int(); Primitive types are not referenced Spring 2014Sharif University of Technology6

new new operator creates a new object from the specified type Returns the reference to the created object String s = new String(); Student d = new Student(); Rectangle rectangle = new Rectangle(); Spring 2014Sharif University of Technology7

Create Objects This code will not create an object: String str; It just creates a reference This is a key difference between Java and C++ You can not use “str” variable “str” is null null value in java You should connect references to real objects How to create objects? new Spring 2014Sharif University of Technology8

new new creates a piece of memory Returns its reference Where is the piece of memory? In Heap Where is the Heap? Later… Spring 2014Sharif University of Technology9

Array in java Array elements are stored in heap Integer[] inumbers; Person[] people = new Person[5]; int N = … float[] realNumbers = new float[N]; Array elements are references not objects Exception : primitives Spring 2014Sharif University of Technology10

Primitive-Type Array Sample Spring 2014Sharif University of Technology11

Array Samples Spring 2014Sharif University of Technology12

Array References There is three type of variable in this code array reference array[i] references Initial value: null array[i] objects Fall 2010Sharif University of Technology13

public class Student { private String name; private Long id; public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } Spring 2014Sharif University of Technology14

Array Sample Student[] students = new Student[10]; for (int i = 0; i < students.length; i++) { students[i] = new Student(); students[i].setId(i); } Spring 2014Sharif University of Technology15

Review Reality Object class (category, type) Person, Book, Ball, … Object instance Ali Daei, my laptop, … Object Abstraction Abstract Data Type Object Declaration (Class Declaration) Object Instantiation new Object in Memory Spring 2014Sharif University of Technology16

Example Reality : Person Spring 2014Sharif University of Technology17

Example Object Abstraction Abstract Data Type Object Declaration (Class Declaration) public class Person { private String name; private int age; public void run(){...} public void talk(){...} } Spring 2014Sharif University of Technology18

Object Instances in Reality JafarAgha Object Spring 2014Sharif University of Technology19

Object Instances in Reality AzamKhanoom Object Spring 2014Sharif University of Technology20

Example Object Instantiation new Person JafarAgha = new Person(); JafarAgha.setAge(50); JafarAgha.setName("Jafar"); JafarAgha.talk(); Person AhmadReza= new Person(); Spring 2014Sharif University of Technology21

Objects in Memory 50 … Spring 2014Sharif University of Technology22 J|a|f|a|r

Parameter Passing Styles Call by value Call by reference Call by pointer Java style : Call by passing value of references! Let’s see! Fall 2010Sharif University of Technology23

What happens in a method call Fall 2010Sharif University of Technology24

C++ Parameter Passing Call by value Call by pointer Call by reference Spring 2014Sharif University of Technology25

void cppMethod( Person byValue, Person*byPointer, Person& byReference){ byValue.name = "ali"; byPointer->name = "ali"; byReference.name = "ali"; } Person p1, p3; Person* p2; p2 = new Person(…); cppMethod(p1, p2, p3); Spring 2014Sharif University of Technology26 This is a C++ code This is NOT a java code! Does p1.name change? no Does p2->name change? yes Does p3.name change? yes

void cppMethod( Person byValue, Person*byPointer, Person& byReference){ Person* newP = new Person; byValue = *newP; byPointer = newP; byReference = *newP; } cppMethod(p1, p2, p3); Spring 2014Sharif University of Technology27 This is a C++ code This is NOT a java code! Does p1 change? no Does p2 change? no Does p3 change? yes

Java Parameter Passing Java has no pointer Java references are different from C++ references Java references are more like C++ pointers than C++ references A Java reference is something like a limited pointer Spring 2014Sharif University of Technology28

public void javaMethod( Person first, Person second, int number){ first.age = 12; number = 5; Person newP = new Person(); second = newP; } javaMethod(p1, p2, myInt); Spring 2014Sharif University of Technology29 Does p1.age change? yes Does myInt change? no Does p2 change? no In java, primitive variables are passed to methods by their values Reference values are passed by their reference values.

Swap Fall 2010Sharif University of Technology30

Swap (2) Fall 2010Sharif University of Technology31

Call by reference in C++ Fall 2010Sharif University of Technology32

Call by reference in C# Fall 2010Sharif University of Technology33

In java Everything is passed by value Primitive-types are passed by value References are passed by value But not the value of the object the value of the reference If you want to pass something by reference… Wrap it in an object And make it mutable Fall 2010Sharif University of Technology34

Fall 2010Sharif University of Technology35

For Each Fall 2010Sharif University of Technology37

For Each (2) In for each expression, each element is assigned to another variable If X is a primitive type, element values are copied into item variable Fall 2010Sharif University of Technology38

Where storage lives Registers Stack Heap Constants Non-RAM Spring 2014Sharif University of Technology39

Memory Hierarchy Spring 2014Sharif University of Technology40

Registers Fastest Inside the CPU Number of registers are limited You don’t have direct control over registers In assembly you have direct access to registers C and C++ have access to this storage to some extent Spring 2014Sharif University of Technology41

The Stack In RAM Slower than register but less limited Mechanism of function call in CPU Stack pointer (cp) Support of CPU Java references are (usually) placed on stack Primitive data types are also (usually) located in stack Java compiler must know the lifetime and size of all the items on the stack Java objects themselves are not placed on the stack Spring 2014Sharif University of Technology42

The stack (cont.) C++ allows allocation of objects on the stack E.g. this code creates an object on the stack Person p; In C++ it creates an object on the stack In Java it creates only a reference on the stack The actual object will be on Heap C++ allows arrays of known size on stack Java does not! Spring 2014Sharif University of Technology43

Compile time vs. Run time Some information are available at compile time Stack elements should be specified in compile time So C++ allows these variables on stack: int array[10]; Person p; Some information are not available at compile time So variable length variables can not be on stack If n is a variable “int array[n] “ is not allowed in C++ Java is simple! No object on stack! Spring 2014Sharif University of Technology44

The Heap This is a general-purpose pool of memory Also in the RAM area All Java objects live here The compiler doesn’t need to know the length of the variables new operator  the storage is allocated on the heap Spring 2014Sharif University of Technology45

Heap Generations The heap is split up into generations The young generation stores short-lived objects that are created and immediately garbage collected The Old generation Objects that persist longer are moved to the old generation also called the tenured generation The permanent generation (or permgen) is used for class definitions and associated metadata Spring 2014Sharif University of Technology46

Other storages Constant values are often placed directly in the program code Non-RAM Storage Streamed objects Persistent objects Spring 2014Sharif University of Technology47

Primitive Types new is not efficient for these small variables int a; char ch; In these cases, automatic variable is created that is not a reference The variable holds the value directly It’s placed on the stack Much more efficient These primitives are stored on stack, when…? When they are inside an object Spring 2014Sharif University of Technology48

Java Primitive Types Spring 2014Sharif University of Technology49

Primitive Wrapper Classes Used to represent primitive values when an Object is required All of them are immutable Java 5 added some shortcuts for their assignment Spring 2014Sharif University of Technology50

Sample Integer i = new Integer(2); Integer j = new Integer(2); System.out.println(i==j); //Prints false. Why? i = j;//Reference Assignment i = 2;//OK. A new shortcut in Java5+ Long l = 2;//Syntax Error. Why? Long l = 2L;//OK l = i;//Syntax Error. Why? Spring 2014Sharif University of Technology51

Example 1 Spring 2014Sharif University of Technology52 public static void main(String[] args) { A parent = new A(); } class A { B child = new B(); int e; } class B { int c; int d; }

Example 2 public static void foo(String bar){ Integer baz = new Integer(bar); } Spring 2014Sharif University of Technology53