Java Strings are Immutable - Here's What That Actually Means

Sdílet
Vložit
  • čas přidán 26. 06. 2024
  • Java String are Immutable - but what does that really mean?
    We'll learn why Strings are immutable in Java, and what it means for your Java programs.
    String immutability in Java means that String objects cannot be modified after they're created. Let's talk about why it matters that Strings are immutable, and why Java chose to make them immutable in this beginner video lesson tutorial.
    Learn or improve your Java by watching it being coded live!
    Hi, I'm John! I'm a Lead Java Software Engineer and I've been in the programming industry for more than a decade. I love sharing what I've learned over the years in a way that's understandable for all levels of Java learners.
    Let me know what else you'd like to see!
    Links to any stuff in this description are affiliate links, so if you buy a product through those links I may earn a small commission.
    📕 THE best book to learn Java, Effective Java by Joshua Bloch
    amzn.to/36AfdUu
    📕 One of my favorite programming books, Clean Code by Robert Martin
    amzn.to/3GTPVhf
    🎧 Or get the audio version of Clean Code for FREE here with an Audible free trial
    www.audibletrial.com/johnclean...
    🖥️Standing desk brand I use for recording (get a code for $30 off through this link!)
    bit.ly/3QPNGko
    📹Phone I use for recording:
    amzn.to/3HepYJu
    🎙️Microphone I use (classy, I know):
    amzn.to/3AYGdbz
    Donate with PayPal (Thank you so much!)
    www.paypal.com/donate/?hosted...
    ☕Complete Java course:
    codingwithjohn.thinkific.com/...
    codingwithjohn.com

Komentáře • 748

  • @etainad0085
    @etainad0085 Před 2 lety +726

    Hey John! I do not leave comments often, so this is a special event. I am currently learning Java at university and at home, and I wanted to tell you how much your videos are helping me. Your simple way of teaching is amazing for new learners, and I find your channel criminally underrated. Keep on uploading, Im sure youll get big on CZcams, a 100%!

    • @CodingWithJohn
      @CodingWithJohn  Před 2 lety +76

      Thanks a ton! I'll keep working on it, glad it's helping you!

    • @cagan8
      @cagan8 Před 2 lety +13

      Was going to say the same, usually programming videos are either boring or not engaging and taught well. This is completely opposite, very clear and understandable. Thank you

    • @alexwatts1375
      @alexwatts1375 Před 2 lety +3

      The best creators bubble to the top!

    • @snowwhite2146
      @snowwhite2146 Před 2 lety +3

      @@CodingWithJohn Same here. I have a Java exam in June and your videos are a good revision for me. Many thanks.

    • @csgrinds
      @csgrinds Před 2 lety

      Recommend if you're serious about mastering Java that you read e.g. Joshua Bloch rather than watching needlessly long youtube presentations. No criticism of this video intended.

  • @MrYourSalvation
    @MrYourSalvation Před 2 lety +198

    Plus one interesting thing - due to String's immutability and presense of a string pool - the hashCode() method is calculated only the first time and saved as a value inside String object. Therefore when you call hashCode() method second time (e.g. on another variable with the same literal value) - it will just return stored value, no need to calculate hash code again.

    • @finmonster5827
      @finmonster5827 Před 2 lety

      ґалічєнин

    • @annaburdanova8307
      @annaburdanova8307 Před 2 lety +7

      Yura, thank you for sharing this interesting fact, the video itself and the comments are a real treasure for a Java learner!

    • @fabio.1
      @fabio.1 Před 6 měsíci

      👍

    • @CodingWithJohn
      @CodingWithJohn  Před 3 měsíci +3

      Really cool!

  • @mohitsanghai5455
    @mohitsanghai5455 Před 2 lety +47

    Thanks a lot for the crisp and clear video, John. Just to summarize String Immutability Benefits -
    1) Usage of String pool, saving tons of memory and hashCode calculation
    2) safe for multithreading
    3) Removes any security threat by not allowing hackers to change referenced string values to cause security issues in the application

    • @bobfarker4001
      @bobfarker4001 Před rokem

      You basically summarized the summary.

    • @Atarian6502
      @Atarian6502 Před 2 měsíci

      Thanks for summary. Question regarding #1: Do I understand this correctly: the String pool saves the memory ONLY if you have two or more identical string variables (they point to the same piece of memory), but it wastes memory EVERY time you are changing the strings (it uses new piece of memory for the whole new string even if you change only one letter)?

  • @alexz4006
    @alexz4006 Před 2 lety +49

    I always had a question about this topic. I read in a book about java, that strings were immutable, but it never went so much into detail. This is a very good video. Thanks for sharing.

  • @Hufsa
    @Hufsa Před 2 lety +5

    first time in this channel and it's absolutely great to dedicate a specific video to talk only about immutable objects in less than 10 minutes, perfectly clear!

  • @NuanDaa
    @NuanDaa Před 2 lety +11

    Dude I’m in bootcamp now for 6 months and no coding background. I just watched your video and I can say you have a best teaching technique that super understandable. You just got a subscriber. Thanks.

  • @idkidkidk3333
    @idkidkidk3333 Před 2 lety +12

    Thank you! I will for sure be checking out more of your videos. You explained everything very clearly!

  • @matthewharrison3921
    @matthewharrison3921 Před rokem +8

    You have a talent for explaining things in a concise and easy to process manner. Thank you, sir!

  • @dmitriirodionov
    @dmitriirodionov Před 2 lety +10

    Outstanding and easy to understand explanation! Thank you for this video!

  • @hanikhellafi4872
    @hanikhellafi4872 Před rokem +1

    Man I just discovered your channel and I find your content amazing. This is the kind of depth I was looking for regarding string immutability.

  • @Veganzza
    @Veganzza Před rokem

    Man, you are so amazing. I've read many guides about immutable string but none of them is as clear as your explanation

  • @1dagmawi
    @1dagmawi Před 2 lety

    You are easy to understand and always to the point. Glad I found you. Keep up the good work. Cheers.

  • @hagnap
    @hagnap Před 2 lety +6

    Such a simple topic explained so well, wish they explained it like this in my early CS courses

  • @matthewmoore1307
    @matthewmoore1307 Před 2 lety +1

    I love how you’re drawing out with examples as you explain

  • @jiro.nemo.1
    @jiro.nemo.1 Před rokem +1

    Ive been using Java as a student for nearly 5 years now, and your content has been completely mind-blowing to me. Made me adopt the "I know nothing" attitude and relearn everything.

  • @swapode
    @swapode Před 2 lety +249

    I think you're kinda missing the main reason why Strings are immutable: You can't really have sensible mutable Strings since you can't change their length without moving everything to newly allocated memory on the heap which is incredibly expensive.
    I absolutely see your points as benefits, in fact I think Rust has proven that the whole mutable by default approach is a mistake, but it might have been a good idea to go into the actual reason a bit.

    • @XD-nj7bc
      @XD-nj7bc Před 2 lety +4

      I can think of multiple ways that you can change your String length during runtime without coping (at least most of the time). Lists, Allocating more than cou need and and only get new memory when you run out.

    • @watertrainer3992
      @watertrainer3992 Před 2 lety +12

      @@XD-nj7bc allocating more than you need doesn't really solve the problem though, as you'd then just use more than you need, making it more expensive than immutable Strings

    • @XD-nj7bc
      @XD-nj7bc Před 2 lety +5

      @@watertrainer3992 of course it is not cheaper than not mutable strings but you can then change the size without the copying he mentionend.

    • @swapode
      @swapode Před 2 lety +20

      @@XD-nj7bc I put the word "sensible" in there for a reason 🙂

    • @garybuttherissilent5896
      @garybuttherissilent5896 Před 2 lety +5

      @@XD-nj7bc yeah he put the word "sensible" in there for a reason bruh

  • @codingweb3904
    @codingweb3904 Před 2 lety

    Knew all this but still his way of explaining held me till the end.... His way of teaching is just amazing

  • @mirzaaqeel
    @mirzaaqeel Před rokem

    Crystal clear with examples. Hats off to you.

  • @CuriousCyclist
    @CuriousCyclist Před 2 lety

    Thank you for taking the time to make this video. I have liked, subscribed and am commenting. Cheers!

  • @herberthsu1495
    @herberthsu1495 Před 2 lety

    simple, clear and straightforward explanation. thanks for sharing

  • @perox1982
    @perox1982 Před rokem

    Now Everything has sence. I know many teachers that needs THIS VIDEOS. You Rocks John.

  • @arshandubey
    @arshandubey Před 2 lety

    To the point , Every bit of information provided in just 7 minutes. SUBSCRIBED !!!

  • @TG-ri3mu
    @TG-ri3mu Před 2 lety

    Wow, wow, wow, FINALLY the explanation of immutable strings that l was looking for sooo long time! THANK YOU!

  • @drewbruggman
    @drewbruggman Před 2 lety

    There was an error i was dealing with ages ago that i couldn't figure out and this video made that error make perfect sense, thank you!

  • @huseyinkadioglu
    @huseyinkadioglu Před 8 měsíci

    Simple and clear explanation John. I appreciate your work and effort. Amazing stuff!

  • @arturillosmeriglia8029

    Great explanation! Easy to follow, clear and concise.
    You earned a new subscriber!

  • @praveen123ist
    @praveen123ist Před rokem +1

    I think I'll never look back again at why string is immutable, you made it super clear 👌🙏 awesome!!!!

  • @anluong8103
    @anluong8103 Před rokem +1

    Thanks so much. I've just come up with an interview question about this subject this morning. Luckily I watched your video the night before :)

  • @JessePoage
    @JessePoage Před 2 lety +1

    Again, thank you for explaining concepts better than most professors

  • @h-girlradio4699
    @h-girlradio4699 Před 2 lety

    Thank you so much for explaining this!! I never truly got a grasp on what was meant by Strings being immutable but you explained it perfectly!!

  • @misspotato813
    @misspotato813 Před 2 lety +9

    I'm self teaching Java currently, I have a lot of questions about the "whys" and "hows" but currently the JavaDocs are a bit too advanced for me. This really helped!

  • @Ali-cf5lm
    @Ali-cf5lm Před 2 lety

    Thank you John.. That was the best explanation for understanding what immutable means

  • @alexandrprodan8794
    @alexandrprodan8794 Před rokem

    Wow, it's great video! Informative, comprehensive and not boring.
    Thank you very much!

  • @Coccoutube
    @Coccoutube Před rokem

    Excellent lesson John! I'm learning a lot with you :)

  • @JustinBieberFanSA
    @JustinBieberFanSA Před rokem

    John, I love your videos. Thank you. Studying for the OCA at the moment and you explain these concepts so well that I do not need to study them after watching the video. I understand it, which means I remember it forever because I understand how it works. I really appreciate your help!

  • @mesikamesika
    @mesikamesika Před 2 lety

    You simplify it in an amazing way well done :)

  • @dylangovender
    @dylangovender Před 2 lety

    This was awesome. Thanks, John!

  • @syedirfanahmad9626
    @syedirfanahmad9626 Před 2 lety

    Good, quick description 👍

  • @amaanmohammad1190
    @amaanmohammad1190 Před 2 lety

    Simple Concise and to the point.

  • @ChaseDetrick
    @ChaseDetrick Před 8 měsíci

    This was fantastic, thank you so much! I've been struggling a lot in my comp sci classes because the professor refuses to go over theory, so this is wonderful :) You've won a very very faithful subscriber haha.

  • @supun_sandaruwan
    @supun_sandaruwan Před 2 lety +1

    you are the best java teacher that i saw on the youtube because you are cleary explain what is the behind theory thank you very much 🤩💖

  • @rajeshchattopadhyaya2805

    I am currently learning Java your videos give deeper understanding of Java thank you very much!

  • @StobbeTime
    @StobbeTime Před rokem

    Your an awesome teacher! I remember studying this topic in my book and could not understand it till now. Thanks.

  • @thunderstruck2727
    @thunderstruck2727 Před 2 lety +1

    Love your concise, clear, and informative videos!
    I normally try to read Oracle Tutorial Trails, but these videos are faster on certain topics. Plus you include great examples.
    Thank you!

    • @CodingWithJohn
      @CodingWithJohn  Před 2 lety +2

      Those are good too (as they should be, coming directly from Oracle) and I've used them to do some research on various topics I've done videos for. But yeah, often it's easier to watch a video on it. Thanks!

    • @thunderstruck2727
      @thunderstruck2727 Před 2 lety

      @@CodingWithJohn thanks for the reply! I’m a Comp Sci graduate who just finished my first year working a software job.

  • @vasundharachintha5037
    @vasundharachintha5037 Před 8 měsíci

    Your videos are amazing!!You really do make the concepts clear!!Thanks for such an amazing content.

  • @boxerlobsters
    @boxerlobsters Před rokem

    Kudos to you for explaining in such a short time. Cheers man

  • @learnjavaprogramming7132

    I don't have a words John sir, you are a real teacher I've ever seen , iam very lucky becouse of i found your vedio ☺️☺️

  • @tiagosilva9795
    @tiagosilva9795 Před 8 dny

    What a great explanation! Thanks John!

  • @sourav5449
    @sourav5449 Před 5 měsíci

    This is the best explanation of Immutability on youtube
    You are a gem 💎

  • @undercovercoder
    @undercovercoder Před rokem

    Thanks man!! Totally understood this concept :)

  • @rrroman870
    @rrroman870 Před 2 lety

    Crystal clear. Thanks!

  • @LearnYouAndMe
    @LearnYouAndMe Před rokem

    Loving your tutorial. Crystal clear explanation

  • @billwu7367
    @billwu7367 Před rokem

    you are the best programmer combining teacher as i ever met!support!

  • @rajaaekant
    @rajaaekant Před 2 lety

    Clear and concise. Thank you

  • @prajwaltirpude8582
    @prajwaltirpude8582 Před 2 lety

    Great video. It is so clear now and books never explain it such great way

  • @CodingWithGhostInCode

    I thought I had a firm grasp of what it means when they say Strings are immutable. After watching this video, Everything i thought i knew went straight outta the window. Thanks John. Way to make things understandable.

  • @abhay12323
    @abhay12323 Před 2 lety

    Highly appreciate your efforts.

  • @TheRealAnkitSharma
    @TheRealAnkitSharma Před rokem

    John! You explained it very well. Completely understandable and with a really nice example.

  • @faizalimuhammadzoda4731

    Thanks for the effort you put in these videos. Thanks for sharing. I am learning a lot.

  • @jayskieeee
    @jayskieeee Před 2 lety +1

    i wasn't aware of the benefits of immutability, even though i knew exactly what immutability means. thanks for the tid bits!

  • @eiyukabe
    @eiyukabe Před 2 lety +1

    Excellent video, and clearly explained.

  • @rastkostajic5525
    @rastkostajic5525 Před 3 měsíci

    Man! This is a mind blowing info for me. Never thought about this before! Thanks.

  • @pinkzombierabbit
    @pinkzombierabbit Před rokem

    Thank you, very simple and clear explanation.

  • @levekbarel
    @levekbarel Před 2 lety

    U are gifted!! Thanks for sharing!!

  • @msampson3d
    @msampson3d Před 2 lety

    Wow, this was great! Super clear explanation that makes me finally get it.
    Maybe you have a video that will finally make me understand static methods! I'll have to check.

  • @bonnydavis6730
    @bonnydavis6730 Před 11 měsíci

    Beautifully explained. Very informative . Thank you !!

  • @241sanchita
    @241sanchita Před 2 lety

    Hello John, your videos are incredibly helpful. I have learnt a lot from your videos. Do keep up the good work, you will go big on CZcams one day.

  • @pendago8484
    @pendago8484 Před 2 lety

    You're a great teacher and a great help. Thanks.

  • @emekaukwuoma3359
    @emekaukwuoma3359 Před 2 lety +1

    Learnt a whole lot about string immutability in 7minutes than I have in a year. Lol. Nice one

  • @krishnachaitu17
    @krishnachaitu17 Před rokem

    perfect explanations john thanks for the content

  • @rhitamdutta1996
    @rhitamdutta1996 Před 2 lety +2

    Holy shit the way you explain things is so simple and lucid, subbed!!!

  • @sebon11
    @sebon11 Před rokem

    AMAZING video, thanks!

  • @codyprevatt
    @codyprevatt Před měsícem

    You explain things extremely well.

  • @hrf4711
    @hrf4711 Před 2 lety

    Wow I didn't aware of this.thanks a lot John

  • @THE16THPHANTOM
    @THE16THPHANTOM Před 2 lety

    the coolest thing about the immutable part(to me) is the multiple thread point. i have come to appreciate that after so many times i have replicated that fact for my objects while trying to avoid the synchronized keyword.

  • @kingfatpig3512
    @kingfatpig3512 Před 2 lety

    easy to understand thank you john

  • @raihanulalamhridoy4714

    This video was really helpful. Thank you very much.

  • @alexeysytnikov6220
    @alexeysytnikov6220 Před měsícem

    Great video, John!

  • @maresolaris
    @maresolaris Před 2 lety

    Finally! I finally understand what immutable actually means. Thank you for this clear explanation.

  • @AmongUs-qt3uo
    @AmongUs-qt3uo Před rokem

    Thank you sir! brilliant tutorial!

  • @xuansong4795
    @xuansong4795 Před 2 lety

    Excellent video, Thank you John.

  • @suneetlimkar
    @suneetlimkar Před 2 lety

    Love how the CZcams recommendations algo work.glad i came across this video.. so well explained.. thank you

  • @officialismailshah
    @officialismailshah Před 2 lety

    Love you man you got all my points clear about immutables....

  • @alexmercer8984
    @alexmercer8984 Před 2 lety

    Loved your video mate, you have a new subscriber 🍻

  • @shankar7435
    @shankar7435 Před rokem

    Perfect explanation. Thanks.

  • @LTZMSYAL
    @LTZMSYAL Před rokem

    Great job John! Thank you

  • @Jakypbekovich
    @Jakypbekovich Před rokem

    Trifecta is done! Very well explained, thank you!

  • @cr.6848
    @cr.6848 Před 2 lety

    Thank you a lot! Great explanation 🔥

  • @fightinggold7674
    @fightinggold7674 Před rokem

    flawless explanation. subscribed

  • @OREH88
    @OREH88 Před 2 lety

    thanks a lot! very clear explanation!

  • @user-lx9nk7vf8c
    @user-lx9nk7vf8c Před 2 lety

    Yesterday I had this question in my mind and today I saw this video. Thanks!

  • @Atharva_kathiyawadi
    @Atharva_kathiyawadi Před 2 lety

    your videos really awesome. i found late but awesome contents 👍🏻

  • @swastikmohapatra4665
    @swastikmohapatra4665 Před 2 lety

    i have to say i learn something new every day via this channel .

  • @Michael17000
    @Michael17000 Před 2 lety

    Great explanation, love it, thanks!

  • @d0rzA
    @d0rzA Před 2 lety

    Amazing explanation thank you so much!

  • @harit9380
    @harit9380 Před 2 lety

    That was a great explanation!

  • @fantasy9960
    @fantasy9960 Před rokem

    Wow, this is the best explanation I can find on youtube! thank you john

  • @humairanaeempasha2362
    @humairanaeempasha2362 Před 2 lety

    You are amazing at teaching stuff hats off!

  • @marcosfraguela
    @marcosfraguela Před 2 lety

    Very well explainded, thanks

  • @chidambaramvalliappan9069

    Amazing and Awesome Explanation of the concepts.