কোন int একটি নাল কিনা তা কীভাবে পরীক্ষা করবেন


110

আমার কাছে একটি বস্তু আছে Person

এর বিভিন্ন বৈশিষ্ট্য রয়েছে;

int id;
String name;

আমি একটি ব্যক্তির মত জিনিস সেট Person p = new Person(1,"Joe");

1.) আমার অবজেক্টটি নাল নয় কিনা তা পরীক্ষা করা দরকার; নিম্নলিখিত অভিব্যক্তিটি সঠিক?

if (person == null){
}

Or


if(person.equals(null))

২) আইডিতে কোনও অন্তর্নিহিত রয়েছে কিনা তা আমার জানতে হবে।

if(person.getId()==null){} 

তবে, জাভা এটির অনুমতি দেয় না। আমি কীভাবে এই চেক করতে পারি?


10
শুধু জাভা নয়। একটি আদিম ধরণের কোথাও নালার হতে পারে না।
রোহিত জৈন

2
হ্যাঁ, একটি এর ডিফল্ট মান intহয় 0?
শ্যারন এইচকিউ

1
@sharon। হ্যাঁ, এটি 0। সুতরাং, আপনি 0পরিবর্তে চেকটি করতে পারেন । আপনি যদি নাল চেক করতে চান। তার জন্য পূর্ণসংখ্যার মোড়ক ব্যবহার করুন।
রোহিত জৈন

3
সনাক্তকারী কোডটি উপস্থাপনের জন্য কোনও int ব্যবহার করা সর্বদা ভাল ধারণা নয় কারণ আপনি এটিকে সত্য সংখ্যা হিসাবে ব্যবহার করছেন না - আপনি এর সাথে কোনও যোগ বা বিয়োগ বা অন্যান্য গণিত ক্রিয়াকলাপ করবেন না। পরিবর্তে একটি স্ট্রিং ব্যবহার বিবেচনা করুন।
els ই

উত্তর:


184

একটি intনাল নয়, এটি 0আরম্ভ করা না হলে এটি হতে পারে ।

আপনি যদি কোনও পূর্ণসংখ্যা শূন্য হতে সক্ষম হতে চান তবে আপনার Integerপরিবর্তে এটি ব্যবহার করা দরকার int

Integer id;
String name;

public Integer getId() { return id; }

বিবৃতিটি if(person.equals(null))সত্য হতে পারে না, কারণ যদি personএটি নাল হয়, তবে একটি NullPointerExceptionনিক্ষেপ করা হবে। সুতরাং সঠিক অভিব্যক্তি হয়if (person == null)


@sharonHwk "person == নাল" আরও ভাল বিকল্প হওয়া উচিত। যদি ব্যক্তি নাল হয়, তবে এটির "সমান" পদ্ধতি থাকবে না, তারপরে "person.equals (নাল)" নিক্ষেপ করবে।
কোডিংফ্যানস্টেভ

"কোনও ইনট নাল নয়, আরম্ভ না করা হলে 0 হতে পারে।" এটি ১০০% ঠিক নয়, স্থানীয় ভেরিয়েবল হিসাবে কোনও আরম্ভ করা হবে না।
আমেরিকা

অবশ্যই, স্থানীয় ভেরিয়েবলের জন্য এটি নির্বিঘ্নিত করা যায় না, এটি অবৈধ কোড, জাভা এটির অনুমতি দেয় না, যেমন এর স্পেসিফিকেশনে ঘোষণা করা হয়।
অ্যালেক্স

48

আদিমদের নাল মান নেই। ডিফল্ট একটি int জন্য 0 হয়।

if(person.getId()==0){}

জাভাতে আদিমদের জন্য ডিফল্ট মান:

Data Type   Default Value (for fields)

byte                0
short               0
int                 0
long            0L
float           0.0f
double          0.0d
char            '\u0000'
boolean         false

অবজেক্টগুলির ডিফল্ট মান হিসাবে শূন্য হয়।

স্ট্রিং (বা যে কোনও বস্তু) ---> নাল

1.) আমার অবজেক্টটি নাল নয় কিনা তা পরীক্ষা করা দরকার; নিম্নলিখিত অভিব্যক্তিটি সঠিক?

if (person == null){
}

উপরের অংশের কোডটি চেক করে যদি ব্যক্তি শূন্য থাকে। আপনার করা দরকার

if (person != null){ // checks if person is not null
}

এবং

if(person.equals(null))

উপরের কোডটি নালপয়েন্টার এক্সসেপশন নিক্ষেপ করবে যখন ব্যক্তি নাল হবে।


আপনাকে ধন্যবাদ, এটি খুব দরকারী।
শ্যারন এইচকিউ

14

একটি আদিম নਾਲ intহতে পারে না। আপনার যদি নালার প্রয়োজন হয় তবে Integerপরিবর্তে ব্যবহার করুন।


3

1.) আমার অবজেক্টটি নাল নয় কিনা তা পরীক্ষা করা দরকার; নিম্নলিখিত অভিব্যক্তিটি সঠিক?

যদি (ব্যক্তি == নাল)}

হ্যাঁ । আপনি কীভাবে এটি পরীক্ষা করে দেখুন যে বস্তুটি কিনা null

২) আইডিতে কোনও অন্তর্নিহিত রয়েছে কিনা তা আমার জানতে হবে।

যদি (person.getId () == নাল) {}

না যেহেতু idআদিম হিসাবে সংজ্ঞায়িত করা হয়েছে int, এটির সাথে 0এটি ডিফল্টভাবে আরম্ভ হবে এবং এটি কখনও হবে না null। আদিম ধরণেরগুলি যদি খালি হয় তবে তা পরীক্ষা করার দরকার নেই। এগুলি কখনই শূন্য হবে না। আপনি যদি চান, আপনি ডিফল্ট মান 0হিসাবে তুলনা করতে পারেন if(person.getId()==0){}


0

আপনার ক্লাসের সুযোগগুলি অ্যাক্সেস করতে হবে।

এতে অ্যাট্রিবিউটগুলি অ্যাক্সেস করতে, আপনাকে যা করতে হবে:

person.id
person.name

কোথায়

ব্যক্তি

আপনার শ্রেণীর ব্যক্তির উদাহরণ।

এটিবিটগুলি অ্যাক্সেস করা যেতে পারে তবে এটি করা যেতে পারে, যদি না হয় তবে আপনাকে অবশ্যই সেটার এবং গেটার ব্যবহার করতে হবে ...


@ রোহিতজাইন আমি এ কথা বলছি না, আমি বলছি এটি ব্যক্তির কাছে জিজ্ঞাসা করা ঠিক নয় == নুল যদি তিনি জানতে চান যে আইডি "নাল" আছে কিনা। আইডি একটি অন্তর্নিহিত হওয়ার কারণে, আপনি যেভাবে পরামর্শ দিচ্ছেন তিনি সেভাবে জিজ্ঞাসা করতে পারবেন না ...
মেলি -182

0

তুমি ব্যবহার করতে পার

if (person == null || String.valueOf(person.getId() == null)) 

নিয়মিত পদ্ধতির পাশাপাশি

person.getId() == 0

0

জাভাতে আদিম ডেটা ধরণের জন্য নাল মান নেই। আপনার যদি নাল পরীক্ষা করতে হয় তবে আদিম ধরণের পরিবর্তে পূর্ণসংখ্যা শ্রেণি ব্যবহার করুন। আপনাকে ডেটা টাইপের পার্থক্য সম্পর্কে চিন্তা করার দরকার নেই। জাভা প্রারম্ভিক টাইপের ডেটাটিকে পূর্ণসংখ্যায় রূপান্তর করে। স্মৃতি সম্পর্কে যখন পূর্ণসংখ্যা int এর চেয়ে বেশি মেমরি নেয় takes কিন্তু মেমরি বরাদ্দের পার্থক্য, কিছুই বিবেচনা করা যায় না।

এই ক্ষেত্রে আপনাকে অবশ্যই ইন্টার এর পরিবর্তে ইন্টার ব্যবহার করতে হবে

স্নিপেটের নীচে চেষ্টা করুন এবং আরও তথ্যের জন্য উদাহরণ দেখুন,

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

if (val != null){
System.out.println("value is not null");
}

`

এছাড়াও আপনি নীচের মতো নালকে বরাদ্দ করতে পারেন,

val = null;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.