Primitive and Reference (Object) Types in Memory (Java Tutorial)

SdĂ­let
VloĆŸit
  • čas pƙidĂĄn 9. 11. 2017
  • This Java tutorial for beginners compares memory handling of primitive vs object (reference) type variables. This also shows data types in stack and heap memory.
    Aligned to AP Computer Science A.
    đŸ”„ Subscribe To Get More Tutorials: bit.ly/36H70sy đŸ”„
    #Java #JavaTutorial #JavaTutorials

Komentáƙe • 124

  • @BillBarnum
    @BillBarnum  Pƙed 4 lety +3

    📌 Subscribe For The Latest Videos: bit.ly/36H70sy 📌
    .
    đŸ’» All Java Tutorials: bit.ly/JavaTutorialsCZcams đŸ’»
    .
    đŸ€– Learn Java In 3 Hours: bit.ly/JavaIn3Hours đŸ€–

    • @AkashdeepSingh-qq5fw
      @AkashdeepSingh-qq5fw Pƙed 3 lety +1

      what happens if I do (sorry for posting in this reply: i just want to get the answer)
      h = "hello";
      where does the pointer go? will "hello" of h be different object from "hello" of g?

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety

      Hey@@AkashdeepSingh-qq5fw
      You're talking about the line of code at 3:58
      Strings behave differently in this circumstance than most other objects, so there would NOT be a separate object for the h and g variables. Both pointers would point at the same object in a "String pool."
      For more information on how this works with the String class, check out this video: czcams.com/video/Y-Q9m11pFVc/video.html

    • @AkashdeepSingh-qq5fw
      @AkashdeepSingh-qq5fw Pƙed 3 lety

      @@BillBarnum Oh ok thank you very much!
      By the way i have one more question on this video you linked: czcams.com/video/Y-Q9m11pFVc3/video.html
      the question is posted there.

  • @Linkario86
    @Linkario86 Pƙed 4 lety +38

    When the teacher explains this you're like: Dude wtf are you even talking about!?
    And here: Ah... that's not so hard

  • @abkn9977
    @abkn9977 Pƙed 4 lety +48

    This is unexpected. I have wasted hours on videos on this topic and you explained in just 5 minutes and so easily. I'm very thankful to you.

  • @Ali-mi9up
    @Ali-mi9up Pƙed 5 lety +21

    Literally the single most helpful vid on the internet on the topic. Thanks!

  • @afifkhaja
    @afifkhaja Pƙed 4 lety +15

    This is as good as a tutorial gets. Short, to the point, and clearly explained with visuals. Thank you, Bill!

  • @SuperSandman1995
    @SuperSandman1995 Pƙed 4 lety +6

    this is the best video I have found on primitives and reference types apprehension.

  • @thestarinthesky_
    @thestarinthesky_ Pƙed 4 lety +4

    This channel should have at least 500K followers! It is not fair. You are such an amazing teacher and I appreciate it

  • @nipnaps4138
    @nipnaps4138 Pƙed rokem +2

    Never went through a tutorial so quick , thank you for making it easy and smooth

    • @BillBarnum
      @BillBarnum  Pƙed rokem

      Thanks for the comment! I'm glad the videos were useful.

  • @jamindebu7134
    @jamindebu7134 Pƙed 5 lety +9

    thanks so much for making it visual, i understand it so much better

  • @leadgamer7908
    @leadgamer7908 Pƙed 3 lety +1

    A Fool Can Also Understand Concept Like This.
    If There Is Teacher Like You.
    Thank You So Much

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety

      Thanks for the feedback, NoFiX!
      I'm glad you found the video useful.

  • @christo-j5507
    @christo-j5507 Pƙed 4 lety +1

    Clear it with simplicity! The best tutorial ever!

  • @supernovic99
    @supernovic99 Pƙed rokem +1

    I searched so long to find a good video that could explain reference types and how they're actually used. This video helped me a lot!!!

    • @BillBarnum
      @BillBarnum  Pƙed rokem

      I'm glad it was helpful, sciencerules!

  • @d0c.0v3rd0s3
    @d0c.0v3rd0s3 Pƙed 2 lety +1

    Our teacher failed to explain this to us in over an hour. Thank you. That was an explanation the way it should be!

    • @BillBarnum
      @BillBarnum  Pƙed 2 lety

      Thanks for the feedback, Philipp.
      I'm glad you liked the video!

  • @ruinex7718
    @ruinex7718 Pƙed 4 lety +5

    This is an AWESOME explanation, thank you.

  • @kedikebba6441
    @kedikebba6441 Pƙed 4 lety +3

    Thank you bill, you saved me.

  • @fireflies15
    @fireflies15 Pƙed 5 lety +7

    perfect explaining. thank you

  • @MissMidspring
    @MissMidspring Pƙed 4 lety +1

    This is so helpful! You're a very good teacher, thank you so much!

  • @omniversal4739
    @omniversal4739 Pƙed 4 lety +1

    The terms sound so complex yet it's so easy to explain with examples.

  • @21Bullet
    @21Bullet Pƙed 4 lety +2

    Perfect explanation. Thank you!

  • @pamameh1841
    @pamameh1841 Pƙed 6 lety +9

    Great tutorial thank you

  • @harpitapandian2598
    @harpitapandian2598 Pƙed rokem +2

    I'm self studying for the AP CS A Exam this May and your playlist is so helpful! Much easier to follow along than textbooks. Thank you!!

    • @BillBarnum
      @BillBarnum  Pƙed rokem

      Harpita, I'm glad you find the videos useful. Thanks for sharing.

  • @birkhansonkan4236
    @birkhansonkan4236 Pƙed 6 lety +6

    clear explanation thank you

  • @Suraj-pf6ic
    @Suraj-pf6ic Pƙed 4 lety +1

    Thank you for making it super clear to get into my head.

  • @AzzaBruce
    @AzzaBruce Pƙed 4 lety +1

    Thank you! Starting to understand Java now

  • @abhishekgaikwad4828
    @abhishekgaikwad4828 Pƙed rokem

    Explained so quickly and to the point! thanks

  • @someone4860
    @someone4860 Pƙed 3 lety +1

    Hi Bill, I am really thankful to you.

  • @donutsandunicorns
    @donutsandunicorns Pƙed 4 lety +4

    thank u so much for this!

  • @nemeris7
    @nemeris7 Pƙed rokem

    Best explanation on the internet !❀

  • @kinolockhart4228
    @kinolockhart4228 Pƙed 5 lety +3

    Brilliant analogy

  • @enfieldli9296
    @enfieldli9296 Pƙed 2 lety

    Clear explanation! Thank you man

  • @sushantsyt
    @sushantsyt Pƙed 2 lety +3

    That was such a well made video, thanks a lot and keep doing the great work.

    • @BillBarnum
      @BillBarnum  Pƙed 2 lety +1

      Thanks for watching and commenting,
      Sushant!

  • @andybirenzi
    @andybirenzi Pƙed 4 lety +1

    Great and easy to understand explanation

  • @hkahlon9542
    @hkahlon9542 Pƙed 4 lety +1

    Thank you Sir! Very well explained and makes perfect sense. Regards

  • @JThompson_VI
    @JThompson_VI Pƙed 2 lety +1

    Wow, I have been wrestling with this topic in one form or another for a while and this immediately cleared it up, thank you.

    • @BillBarnum
      @BillBarnum  Pƙed 2 lety

      Thanks for the comment, Jacob.
      I'm glad you found the video useful.

  • @meysamjavadzadeh
    @meysamjavadzadeh Pƙed 4 lety +1

    Awesome explaining

  • @MrBumbo90
    @MrBumbo90 Pƙed 4 lety +1

    Best video on the matter.

  • @pratikkumarsingh8114
    @pratikkumarsingh8114 Pƙed 2 lety +1

    Now, my doubts get cleared. Thank you so much for clearing doubts in such a short video.

    • @BillBarnum
      @BillBarnum  Pƙed 2 lety

      Thanks for the comment, Pratik!

  • @h.rehaief3567
    @h.rehaief3567 Pƙed 4 lety +2

    great job well don!

  • @hajarmouqadem7671
    @hajarmouqadem7671 Pƙed 4 lety +1

    THANKS A LOT!

  • @subhangijena4381
    @subhangijena4381 Pƙed 4 lety +1

    very nice explanation

  • @brehgankage6242
    @brehgankage6242 Pƙed 4 měsĂ­ci

    Very well explained.

  • @NMNaufaldo
    @NMNaufaldo Pƙed 6 lety +2

    Thanks

  • @Ravi-qz5of
    @Ravi-qz5of Pƙed 3 lety +3

    Hi I love your videos and Thank you for making them short, simple and visual. Also could you recommend any Java books that teaches you more about "Primitive and Reference Types in Memory" in detail.

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety

      There are some good videos on CZcams that talk more about memory in Java.
      Also, try looking for something on Udemy about Java and memory. You can usually find a coupon for Udemy courses that brings them down to about $15

  • @anilmaurya55
    @anilmaurya55 Pƙed 3 lety +1

    Excellent bair, short and simple thankyou

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety

      Thanks for the feedback Anil. I'm glad you liked the video.

  • @sumitrajpal29
    @sumitrajpal29 Pƙed 3 lety +1

    Thank you sir ! You explained it very easily.

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety +1

      I'm glad it was helpful. Thank you for the feedback!

  • @sudarshanh.s.521
    @sudarshanh.s.521 Pƙed 3 lety

    Simple and nice

  • @9111adil
    @9111adil Pƙed 4 lety +6

    What if you make a String with the same value for example : String a = "hallo"; String b = "hallo";. Does it point to the same value on the heap or does it make a new one?

    • @BillBarnum
      @BillBarnum  Pƙed 4 lety +1

      Strings are a little weird, so in that case, they would point to the same object.
      For more information on that, check out my Strings video:
      czcams.com/video/Y-Q9m11pFVc/video.html

    • @christopherhayward3078
      @christopherhayward3078 Pƙed 3 lety +1

      @@BillBarnum damn....just when you think you are getting the hang of it....Thank you

  • @projectsnik305
    @projectsnik305 Pƙed 2 lety +1

    Thank You very much ,
    This cleared all my doubts 🙏

    • @BillBarnum
      @BillBarnum  Pƙed 2 lety

      Thanks for the comment and watching the video, Nikhil!

  • @user-lf3yj5zb2r
    @user-lf3yj5zb2r Pƙed rokem

    Thank you so much Mr Bill Barnum =)

  • @user-kb6ho8qu9e
    @user-kb6ho8qu9e Pƙed 5 měsĂ­ci

    you are good
    teacher

  • @leolv7872
    @leolv7872 Pƙed 6 lety +2

    nice thx

  • @19891214ful
    @19891214ful Pƙed rokem +1

    Bravo 👏 Short but very informative

    • @BillBarnum
      @BillBarnum  Pƙed rokem

      I'm glad you found it useful. Thanks for commenting.

  • @ihorbehen8563
    @ihorbehen8563 Pƙed 5 lety +2

    Perfectly

  • @user-zw9mk3lz5f
    @user-zw9mk3lz5f Pƙed 2 lety

    Thanks a lot sir I've watched a lot of videos and I just understand it on your way there's no enough words to say how much I grateful đŸ„°

  • @itsblu4735
    @itsblu4735 Pƙed 7 měsĂ­ci

    Thank you so much!

  • @bosco4896
    @bosco4896 Pƙed 4 lety +3

    YES I LIKE THIS

  • @kimsungho4114
    @kimsungho4114 Pƙed 3 lety +1

    You're one amazing man

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety

      Thanks for the feedback, Sungho!

  • @iskandermakhmudov
    @iskandermakhmudov Pƙed rokem +1

    Thank you!

  • @siddharthmundra1895
    @siddharthmundra1895 Pƙed rokem +1

    thank you so much !

    • @BillBarnum
      @BillBarnum  Pƙed rokem +1

      I'm glad you found the video useful, Siddharth.

  • @Hinchey613
    @Hinchey613 Pƙed 7 měsĂ­ci

    Just gotta say thanks for your videos

  • @mz-wk4kb
    @mz-wk4kb Pƙed 2 lety +1

    Hi Bill! Could you please create a playlist to include all your amazing java lessons?

    • @BillBarnum
      @BillBarnum  Pƙed 2 lety

      Here you go:
      Java For Beginners
      czcams.com/play/PLmpmyPywZ443dRtMleUPoNp2OyiNE45O6.html

  • @rockedwow7217
    @rockedwow7217 Pƙed 3 lety +1

    Dude this video helped me

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety +1

      Thanks for the feedback! I'm glad that you found it useful.

  • @illmatic33
    @illmatic33 Pƙed 4 lety +1

    Good stuff.

  • @NguyenPhuc-pt8bh
    @NguyenPhuc-pt8bh Pƙed rokem

    thanks bro

  • @harshilplays1170
    @harshilplays1170 Pƙed rokem +1

    thanks a lot 👍 👍

    • @BillBarnum
      @BillBarnum  Pƙed rokem

      Thanks for watching and commenting, Harshil.

  • @romariosihombing7820
    @romariosihombing7820 Pƙed 4 lety +5

    THIS IS PERCEFT BILL!!!

  • @rickzalman4136
    @rickzalman4136 Pƙed 9 měsĂ­ci

    Nice job ! explaining reference variables and primative or value types.
    But I like to add something you might not have covered.
    Only one memory location is created for primative variables which is on the stack.
    Primative types have their actual data stored at the same place where the variable is stored.
    Also primative types have no methods.
    Also all primatives have a known fixed size. For instance a int variable is 4 bytes. A double is 8 bytes.
    Reference types do not contain the actual data. They only show where the actual data(object) is stored in memory(heap).
    Also two memory locations are created when creating objects. One memory location for the object, which is the heap . And one memory location for the object reference variable.
    Also objects are anonymous, they do not have a name.
    For instance, the following code:
    String person ="Lisa";
    An String object is created with a text value "Lisa". Also this object has no name. This String object is stored in a special area in the heap called the constant string pool. Objects contain the actual data, in this example it's "Lisa" .
    Now the reference variable, does have a name , which is
    " person" . This variable holds the address of the
    String object with the value of "Lisa".
    This reference variable is stored in the stack. Reference variabes do not contain the actual data. They only show where to find that data somewhere in memory(heap).

    • @goldenotis9703
      @goldenotis9703 Pƙed 7 měsĂ­ci

      Hi, My question is concerning how the stack works in this design. Since a stack uses FIFO or LIFO does that mean 'd' and 'c' have to be popped(removed) from the stack in order to access 'b'?

  • @user-bl9pt8zz5t
    @user-bl9pt8zz5t Pƙed 6 měsĂ­ci

    So when you set h =g, if you change the value of g to "goodbye", will h change to "goodbye as well? Since they were initially both pointing at "hello", doesn't that mean when you change g to "goodbye", h should also change to "goodbye"?

  • @goldenotis9703
    @goldenotis9703 Pƙed 7 měsĂ­ci

    My question is concerning how the stack works in this design. Since a stack uses FIFO or LIFO does that mean 'd' and 'c' have to be popped(removed) from the stack in order to access 'b'?

  • @shahriarmim4696
    @shahriarmim4696 Pƙed 6 lety +2

    At 4:39 if we make String g point to "goodbye" then what will happen to "hello" ?

    • @BillBarnum
      @BillBarnum  Pƙed 6 lety +9

      Shahriar Mim,
      If an object on the heap doesn’t have anything pointing to it, Java’s garbage collection will automatically delete it to save memory.

    • @shahriarmim4696
      @shahriarmim4696 Pƙed 6 lety +1

      Thanks a lot for clearing my confusion :)

  • @sujaybanerjee3511
    @sujaybanerjee3511 Pƙed 2 lety +1

    wht editing software do u use

    • @BillBarnum
      @BillBarnum  Pƙed 2 lety

      I use the paid version of Screencast-O-Matic

  • @AkashdeepSingh-qq5fw
    @AkashdeepSingh-qq5fw Pƙed 3 lety +1

    what happens if I do
    h = "hello";
    where does the pointer go? will "hello" of h be different object from "hello" of g?

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety

      Hey Akashdeep,
      You're talking about the line of code at 3:58
      Strings behave differently in this circumstance than most other objects, so there would NOT be a separate object for the h and g variables. Both pointers would point at the same object in a "String pool."
      For more information on how this works with the String class, check out this video: czcams.com/video/Y-Q9m11pFVc/video.html

    • @AkashdeepSingh-qq5fw
      @AkashdeepSingh-qq5fw Pƙed 3 lety

      @@BillBarnum Oh ok thank you very much!
      By the way i have one more question on this video you linked: czcams.com/video/Y-Q9m11pFVc3/video.html
      the question is posted there.

  • @Tony.Nguyen137
    @Tony.Nguyen137 Pƙed 3 lety

    But the arrays store primitive type datas in the heap right?! So the statement „all data for primitive typ variables is stored on the stack“ is not quite right, right? đŸ€”

  • @serkansunel
    @serkansunel Pƙed 3 lety +1

    So you are saying that primitives as instance variables and primitive as local variables are both stored in the stack? Isnt it important where that primitive defined? Inside a method or as an object field?

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety +1

      The code demonstrated in the video is local variables.
      If we declared a primitive instance variable, it would appear as part of its object on the heap.

    • @serkansunel
      @serkansunel Pƙed 3 lety +1

      @@BillBarnum yes exactly, i just wanted to emphasize it...

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety +1

      @@serkansunel
      Thanks for pointing that out.

  • @anonymouskevin6558
    @anonymouskevin6558 Pƙed 6 lety

    it will be easier to understand if you talk a bit more about stack:)

    • @ewoyann4266
      @ewoyann4266 Pƙed 4 lety

      trop fort mon gars !!!! good job; alles klar

  • @yogeshwarpatel7540
    @yogeshwarpatel7540 Pƙed 4 lety +1

    wow

  • @sanjeevkumar-ty8dx
    @sanjeevkumar-ty8dx Pƙed 4 lety

    yours 2 video has 2 concepts,see .array type ..int[ ] c,here and other video

  • @pavelvorontsov7020
    @pavelvorontsov7020 Pƙed 5 lety

    Cool video! I just wonder who are the ones who disliked the video? Your ex..?))

  • @AkashdeepSingh-qq5fw
    @AkashdeepSingh-qq5fw Pƙed 3 lety

    QUESTION 1
    what happens if i do
    c = new int[5];
    instead of
    d = new int[5];
    ?
    Will c be overwritten and also affects d? Or:
    - c will move to a new pointer memory location and write the data value array object there, leaving d unaffected
    -d will move to a new pointer memory location copying the data value array. Then the data value at location c will be overwritten
    - something different happens?
    QUESTION 2
    also suppose we just had this code:
    c = {0,1};
    c = new int[2];
    will in this case the data value of c be overwritten? Or c will move to a new pointer memory location and then write the data value array object over there, leaving the data value {0,1} non-deleted? Or something different happens?

    • @BillBarnum
      @BillBarnum  Pƙed 3 lety

      1. For question 1, you are talking about 2:58 . c will point at a brand new array. d will still point at the unchanged old array.
      2. For question 2, you couldn't do c = {0, 1}. You can only hardcode an array in that particular manner if you are also declaring the variable on the same line.

  • @siAppDesign
    @siAppDesign Pƙed 5 lety +1

    why not saying an address as oppose as a pointer

    • @BillBarnum
      @BillBarnum  Pƙed 5 lety

      In Java, the programmer doesn’t have access to the memory address. The Java Virtual Machine (JVM) will put it where it wants and move it around as it sees fit.
      Java programmers may know what a pointer is pointing at, but they won’t know where in memory it is pointing.

  • @arunsanga6433
    @arunsanga6433 Pƙed 4 lety +1

    Thanksgiving

  • @coderatul
    @coderatul Pƙed 5 měsĂ­ci

    life saver đŸ«‚đŸ«‚