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

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 พ.ย. 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

ความคิดเห็น • 124

  • @BillBarnum
    @BillBarnum  4 ปีที่แล้ว +3

    📌 Subscribe For The Latest Videos: bit.ly/36H70sy 📌
    .
    💻 All Java Tutorials: bit.ly/JavaTutorialsTH-cam 💻
    .
    🤖 Learn Java In 3 Hours: bit.ly/JavaIn3Hours 🤖

    • @AkashdeepSingh-qq5fw
      @AkashdeepSingh-qq5fw 3 ปีที่แล้ว +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  3 ปีที่แล้ว

      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: th-cam.com/video/Y-Q9m11pFVc/w-d-xo.html

    • @AkashdeepSingh-qq5fw
      @AkashdeepSingh-qq5fw 3 ปีที่แล้ว

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

  • @Linkario86
    @Linkario86 4 ปีที่แล้ว +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 4 ปีที่แล้ว +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 5 ปีที่แล้ว +21

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

  • @afifkhaja
    @afifkhaja 4 ปีที่แล้ว +15

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

  • @leadgamer7908
    @leadgamer7908 3 ปีที่แล้ว +1

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

    • @BillBarnum
      @BillBarnum  3 ปีที่แล้ว

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

  • @SuperSandman1995
    @SuperSandman1995 4 ปีที่แล้ว +6

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

  • @thestarinthesky_
    @thestarinthesky_ 4 ปีที่แล้ว +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 ปีที่แล้ว +2

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

    • @BillBarnum
      @BillBarnum  ปีที่แล้ว

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

  • @christo-j5507
    @christo-j5507 4 ปีที่แล้ว +1

    Clear it with simplicity! The best tutorial ever!

  • @ruinex7718
    @ruinex7718 4 ปีที่แล้ว +5

    This is an AWESOME explanation, thank you.

  • @jamindebu7134
    @jamindebu7134 5 ปีที่แล้ว +9

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

  • @kedikebba6441
    @kedikebba6441 4 ปีที่แล้ว +3

    Thank you bill, you saved me.

  • @abhishekgaikwad4828
    @abhishekgaikwad4828 ปีที่แล้ว

    Explained so quickly and to the point! thanks

  • @21Bullet
    @21Bullet 4 ปีที่แล้ว +2

    Perfect explanation. Thank you!

  • @omniversal4739
    @omniversal4739 4 ปีที่แล้ว +1

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

  • @MissMidspring
    @MissMidspring 4 ปีที่แล้ว +1

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

  • @nemeris7
    @nemeris7 ปีที่แล้ว

    Best explanation on the internet !❤

  • @fireflies15
    @fireflies15 5 ปีที่แล้ว +7

    perfect explaining. thank you

  • @Suraj-pf6ic
    @Suraj-pf6ic 4 ปีที่แล้ว +1

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

  • @someone4860
    @someone4860 3 ปีที่แล้ว +1

    Hi Bill, I am really thankful to you.

  • @AzzaBruce
    @AzzaBruce 4 ปีที่แล้ว +1

    Thank you! Starting to understand Java now

  • @hkahlon9542
    @hkahlon9542 4 ปีที่แล้ว +1

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

  • @enfieldli9296
    @enfieldli9296 2 ปีที่แล้ว

    Clear explanation! Thank you man

  • @birkhansonkan4236
    @birkhansonkan4236 6 ปีที่แล้ว +6

    clear explanation thank you

  • @JThompson_VI
    @JThompson_VI 2 ปีที่แล้ว +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  2 ปีที่แล้ว

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

  • @pamameh1841
    @pamameh1841 6 ปีที่แล้ว +9

    Great tutorial thank you

  • @andybirenzi
    @andybirenzi 4 ปีที่แล้ว +1

    Great and easy to understand explanation

  • @pratikkumarsingh8114
    @pratikkumarsingh8114 2 ปีที่แล้ว +1

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

    • @BillBarnum
      @BillBarnum  2 ปีที่แล้ว

      Thanks for the comment, Pratik!

  • @supernovic99
    @supernovic99 ปีที่แล้ว +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  ปีที่แล้ว

      I'm glad it was helpful, sciencerules!

  • @meysamjavadzadeh
    @meysamjavadzadeh 4 ปีที่แล้ว +1

    Awesome explaining

  • @d0c.0v3rd0s3
    @d0c.0v3rd0s3 2 ปีที่แล้ว +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  2 ปีที่แล้ว

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

  • @kinolockhart4228
    @kinolockhart4228 5 ปีที่แล้ว +3

    Brilliant analogy

  • @brehgankage6242
    @brehgankage6242 4 หลายเดือนก่อน

    Very well explained.

  • @donutsandunicorns
    @donutsandunicorns 4 ปีที่แล้ว +4

    thank u so much for this!

  • @MrBumbo90
    @MrBumbo90 4 ปีที่แล้ว +1

    Best video on the matter.

  • @projectsnik305
    @projectsnik305 2 ปีที่แล้ว +1

    Thank You very much ,
    This cleared all my doubts 🙏

    • @BillBarnum
      @BillBarnum  2 ปีที่แล้ว

      Thanks for the comment and watching the video, Nikhil!

  • @sushantsyt
    @sushantsyt 2 ปีที่แล้ว +3

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

    • @BillBarnum
      @BillBarnum  2 ปีที่แล้ว +1

      Thanks for watching and commenting,
      Sushant!

  • @user-lf3yj5zb2r
    @user-lf3yj5zb2r ปีที่แล้ว

    Thank you so much Mr Bill Barnum =)

  • @sumitrajpal29
    @sumitrajpal29 3 ปีที่แล้ว +1

    Thank you sir ! You explained it very easily.

    • @BillBarnum
      @BillBarnum  3 ปีที่แล้ว +1

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

  • @anilmaurya55
    @anilmaurya55 3 ปีที่แล้ว +1

    Excellent bair, short and simple thankyou

    • @BillBarnum
      @BillBarnum  3 ปีที่แล้ว

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

  • @harpitapandian2598
    @harpitapandian2598 ปีที่แล้ว +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  ปีที่แล้ว

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

  • @user-kb6ho8qu9e
    @user-kb6ho8qu9e 5 หลายเดือนก่อน

    you are good
    teacher

  • @h.rehaief3567
    @h.rehaief3567 4 ปีที่แล้ว +2

    great job well don!

  • @subhangijena4381
    @subhangijena4381 4 ปีที่แล้ว +1

    very nice explanation

  • @user-zw9mk3lz5f
    @user-zw9mk3lz5f 2 ปีที่แล้ว

    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 🥰

    • @BillBarnum
      @BillBarnum  2 ปีที่แล้ว

      Thanks for the comment!

  • @sudarshanh.s.521
    @sudarshanh.s.521 3 ปีที่แล้ว

    Simple and nice

  • @Hinchey613
    @Hinchey613 7 หลายเดือนก่อน

    Just gotta say thanks for your videos

    • @BillBarnum
      @BillBarnum  6 หลายเดือนก่อน

      I appreciate that

  • @hajarmouqadem7671
    @hajarmouqadem7671 4 ปีที่แล้ว +1

    THANKS A LOT!

  • @19891214ful
    @19891214ful ปีที่แล้ว +1

    Bravo 👏 Short but very informative

    • @BillBarnum
      @BillBarnum  ปีที่แล้ว

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

  • @kimsungho4114
    @kimsungho4114 3 ปีที่แล้ว +1

    You're one amazing man

    • @BillBarnum
      @BillBarnum  3 ปีที่แล้ว

      Thanks for the feedback, Sungho!

  • @rockedwow7217
    @rockedwow7217 3 ปีที่แล้ว +1

    Dude this video helped me

    • @BillBarnum
      @BillBarnum  3 ปีที่แล้ว +1

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

  • @itsblu4735
    @itsblu4735 7 หลายเดือนก่อน

    Thank you so much!

    • @BillBarnum
      @BillBarnum  6 หลายเดือนก่อน

      You're welcome!

  • @Ravi-qz5of
    @Ravi-qz5of 3 ปีที่แล้ว +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  3 ปีที่แล้ว

      There are some good videos on TH-cam 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

  • @harshilplays1170
    @harshilplays1170 ปีที่แล้ว +1

    thanks a lot 👍 👍

    • @BillBarnum
      @BillBarnum  ปีที่แล้ว

      Thanks for watching and commenting, Harshil.

  • @siddharthmundra1895
    @siddharthmundra1895 ปีที่แล้ว +1

    thank you so much !

    • @BillBarnum
      @BillBarnum  ปีที่แล้ว +1

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

  • @NguyenPhuc-pt8bh
    @NguyenPhuc-pt8bh ปีที่แล้ว

    thanks bro

  • @iskandermakhmudov
    @iskandermakhmudov ปีที่แล้ว +1

    Thank you!

  • @NMNaufaldo
    @NMNaufaldo 6 ปีที่แล้ว +2

    Thanks

  • @illmatic33
    @illmatic33 3 ปีที่แล้ว +1

    Good stuff.

  • @goldenotis9703
    @goldenotis9703 7 หลายเดือนก่อน

    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'?

  • @bosco4896
    @bosco4896 4 ปีที่แล้ว +3

    YES I LIKE THIS

  • @9111adil
    @9111adil 4 ปีที่แล้ว +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  4 ปีที่แล้ว +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:
      th-cam.com/video/Y-Q9m11pFVc/w-d-xo.html

    • @christopherhayward3078
      @christopherhayward3078 3 ปีที่แล้ว +1

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

  • @user-bl9pt8zz5t
    @user-bl9pt8zz5t 6 หลายเดือนก่อน

    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"?

  • @leolv7872
    @leolv7872 6 ปีที่แล้ว +2

    nice thx

  • @ihorbehen8563
    @ihorbehen8563 5 ปีที่แล้ว +2

    Perfectly

  • @mz-wk4kb
    @mz-wk4kb 2 ปีที่แล้ว +1

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

    • @BillBarnum
      @BillBarnum  2 ปีที่แล้ว

      Here you go:
      Java For Beginners
      th-cam.com/play/PLmpmyPywZ443dRtMleUPoNp2OyiNE45O6.html

  • @rickzalman4136
    @rickzalman4136 9 หลายเดือนก่อน

    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 7 หลายเดือนก่อน

      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'?

  • @romariosihombing7820
    @romariosihombing7820 4 ปีที่แล้ว +5

    THIS IS PERCEFT BILL!!!

  • @Tony.Nguyen137
    @Tony.Nguyen137 3 ปีที่แล้ว

    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? 🤔

  • @shahriarmim4696
    @shahriarmim4696 6 ปีที่แล้ว +2

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

    • @BillBarnum
      @BillBarnum  6 ปีที่แล้ว +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 6 ปีที่แล้ว +1

      Thanks a lot for clearing my confusion :)

  • @sujaybanerjee3511
    @sujaybanerjee3511 2 ปีที่แล้ว +1

    wht editing software do u use

    • @BillBarnum
      @BillBarnum  2 ปีที่แล้ว

      I use the paid version of Screencast-O-Matic

  • @AkashdeepSingh-qq5fw
    @AkashdeepSingh-qq5fw 3 ปีที่แล้ว +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  3 ปีที่แล้ว

      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: th-cam.com/video/Y-Q9m11pFVc/w-d-xo.html

    • @AkashdeepSingh-qq5fw
      @AkashdeepSingh-qq5fw 3 ปีที่แล้ว

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

  • @AkashdeepSingh-qq5fw
    @AkashdeepSingh-qq5fw 3 ปีที่แล้ว

    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  3 ปีที่แล้ว

      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.

  • @sanjeevkumar-ty8dx
    @sanjeevkumar-ty8dx 4 ปีที่แล้ว

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

  • @siAppDesign
    @siAppDesign 5 ปีที่แล้ว +1

    why not saying an address as oppose as a pointer

    • @BillBarnum
      @BillBarnum  5 ปีที่แล้ว

      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.

  • @serkansunel
    @serkansunel 3 ปีที่แล้ว +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  3 ปีที่แล้ว +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 3 ปีที่แล้ว +1

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

    • @BillBarnum
      @BillBarnum  3 ปีที่แล้ว +1

      @@serkansunel
      Thanks for pointing that out.

  • @yogeshwarpatel7540
    @yogeshwarpatel7540 4 ปีที่แล้ว +1

    wow

  • @anonymouskevin6558
    @anonymouskevin6558 6 ปีที่แล้ว

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

    • @ewoyann4266
      @ewoyann4266 4 ปีที่แล้ว

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

  • @pavelvorontsov7020
    @pavelvorontsov7020 5 ปีที่แล้ว

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

  • @arunsanga6433
    @arunsanga6433 4 ปีที่แล้ว +1

    Thanksgiving

  • @coderatul
    @coderatul 4 หลายเดือนก่อน

    life saver 🫂🫂