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

Поделиться
HTML-код
  • Опубликовано: 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/JavaTutorialsRUclips 💻
    .
    🤖 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: ruclips.net/video/Y-Q9m11pFVc/видео.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: ruclips.net/video/Y-Q9m11pFVc3/видео.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!

  • @SuperSandman1995
    @SuperSandman1995 4 года назад +6

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

  • @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.

  • @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.

  • @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

  • @christo-j5507
    @christo-j5507 4 года назад +1

    Clear it with simplicity! The best tutorial ever!

  • @jamindebu7134
    @jamindebu7134 5 лет назад +9

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

  • @ruinex7718
    @ruinex7718 4 года назад +5

    This is an AWESOME explanation, thank you.

  • @MissMidspring
    @MissMidspring 4 года назад +1

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

  • @kedikebba6441
    @kedikebba6441 4 года назад +3

    Thank you bill, you saved me.

  • @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!

  • @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!

  • @omniversal4739
    @omniversal4739 4 года назад +1

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

  • @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.

  • @21Bullet
    @21Bullet 4 года назад +2

    Perfect explanation. Thank you!

  • @abhishekgaikwad4828
    @abhishekgaikwad4828 Год назад

    Explained so quickly and to the point! thanks

  • @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!

  • @someone4860
    @someone4860 3 года назад +1

    Hi Bill, I am really thankful to you.

  • @hkahlon9542
    @hkahlon9542 4 года назад +1

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

  • @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.

  • @AzzaBruce
    @AzzaBruce 4 года назад +1

    Thank you! Starting to understand Java now

  • @pamameh1841
    @pamameh1841 6 лет назад +9

    Great tutorial thank you

  • @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.

  • @birkhansonkan4236
    @birkhansonkan4236 6 лет назад +6

    clear explanation thank you

  • @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!

  • @nemeris7
    @nemeris7 Год назад

    Best explanation on the internet !❤

  • @enfieldli9296
    @enfieldli9296 2 года назад

    Clear explanation! Thank you man

  • @donutsandunicorns
    @donutsandunicorns 4 года назад +4

    thank u so much for this!

  • @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 RUclips 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

  • @andybirenzi
    @andybirenzi 4 года назад +1

    Great and easy to understand explanation

  • @kinolockhart4228
    @kinolockhart4228 5 лет назад +3

    Brilliant analogy

  • @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 🥰

  • @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!

  • @MrBumbo90
    @MrBumbo90 4 года назад +1

    Best video on the matter.

  • @h.rehaief3567
    @h.rehaief3567 4 года назад +2

    great job well don!

  • @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.

  • @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!

  • @meysamjavadzadeh
    @meysamjavadzadeh 4 года назад +1

    Awesome explaining

  • @brehgankage6242
    @brehgankage6242 4 месяца назад

    Very well explained.

  • @19891214ful
    @19891214ful Год назад +1

    Bravo 👏 Short but very informative

    • @BillBarnum
      @BillBarnum  Год назад

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

  • @subhangijena4381
    @subhangijena4381 4 года назад +1

    very nice explanation

  • @rickzalman4136
    @rickzalman4136 10 месяцев назад

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

  • @hajarmouqadem7671
    @hajarmouqadem7671 4 года назад +1

    THANKS A LOT!

  • @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
      ruclips.net/p/PLmpmyPywZ443dRtMleUPoNp2OyiNE45O6

  • @user-lf3yj5zb2r
    @user-lf3yj5zb2r Год назад

    Thank you so much Mr Bill Barnum =)

  • @NMNaufaldo
    @NMNaufaldo 6 лет назад +2

    Thanks

  • @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:
      ruclips.net/video/Y-Q9m11pFVc/видео.html

    • @christopherhayward3078
      @christopherhayward3078 3 года назад +1

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

  • @user-kb6ho8qu9e
    @user-kb6ho8qu9e 6 месяцев назад

    you are good
    teacher

  • @sudarshanh.s.521
    @sudarshanh.s.521 3 года назад

    Simple and nice

  • @leolv7872
    @leolv7872 6 лет назад +2

    nice thx

  • @ihorbehen8563
    @ihorbehen8563 5 лет назад +2

    Perfectly

  • @Hinchey613
    @Hinchey613 7 месяцев назад

    Just gotta say thanks for your videos

  • @bosco4896
    @bosco4896 4 года назад +3

    YES I LIKE THIS

  • @NguyenPhuc-pt8bh
    @NguyenPhuc-pt8bh Год назад

    thanks bro

  • @itsblu4735
    @itsblu4735 7 месяцев назад

    Thank you so much!

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

  • @kimsungho4114
    @kimsungho4114 3 года назад +1

    You're one amazing man

    • @BillBarnum
      @BillBarnum  3 года назад

      Thanks for the feedback, Sungho!

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

  • @romariosihombing7820
    @romariosihombing7820 4 года назад +5

    THIS IS PERCEFT BILL!!!

  • @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.

  • @siddharthmundra1895
    @siddharthmundra1895 Год назад +1

    thank you so much !

    • @BillBarnum
      @BillBarnum  Год назад +1

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

  • @iskandermakhmudov
    @iskandermakhmudov Год назад +1

    Thank you!

  • @illmatic33
    @illmatic33 4 года назад +1

    Good stuff.

  • @harshilplays1170
    @harshilplays1170 Год назад +1

    thanks a lot 👍 👍

    • @BillBarnum
      @BillBarnum  Год назад

      Thanks for watching and commenting, Harshil.

  • @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.

  • @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 :)

  • @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

  • @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.

  • @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: ruclips.net/video/Y-Q9m11pFVc/видео.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: ruclips.net/video/Y-Q9m11pFVc3/видео.html
      the question is posted there.

  • @pavelvorontsov7020
    @pavelvorontsov7020 5 лет назад

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

  • @yogeshwarpatel7540
    @yogeshwarpatel7540 4 года назад +1

    wow

  • @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.

  • @arunsanga6433
    @arunsanga6433 4 года назад +1

    Thanksgiving

  • @coderatul
    @coderatul 5 месяцев назад

    life saver 🫂🫂