When Final Variable Occupy Memory
Sep 23, 2014when final variable occupy memory in java?
View Replieswhen final variable occupy memory in java?
View RepliesI had a question about data structures. For the insert method of a linked list, the 'node' object is declared in the insert method. So doesn't the 'node' get destroyed as soon as the closing brace of the insert method is encountered? How do all the nodes continue to occupy memory?
View Replies View RelatedHow can i take run time value for static final variable...my lecturer said first time assignment is possible for declared final variable but in my case it shows compile time error..I'm placing my program below with error message
class Sample
{
static final String cname;
void print() {
System.out.println(cname);
}
public static void main(String args[])
{
cname=args[0];
Sample s=new Sample();
s.print();
}
}
Sample.java:11: cannot assign a value to final variable cname.
cname=args[0];
I'm not really sure I understand the functional difference between a static and final variable/field. Oracle defines Class Variable as:
Class Variables (Static Fields) A class variable is any field declared with the static modifier; this tells the compiler that there is exactly one copy of this variable in existence, regardless of how many times the class has been instantiated. A field defining the number of gears for a particular kind of bicycle could be marked as static since conceptually the same number of gears will apply to all instances. The code static int numGears = 6; would create such a static field. Additionally, the keyword final could be added to indicate that the number of gears will never change.
If static will have the same value regardless of how many times it's used, then why use final (or vice versa)?
this code won't compile because selected row must be declared as final because of it being defined outside the window listener. Is their anyway around this? If I make it final the first time that the variable is called it keeps it starting value until the GUI is closed.
butEdit.addActionListener (new ActionListener () {
@Override
public void actionPerformed (java.awt.event.ActionEvent evt) {
int selectedRow = table.getSelectedRow ();
final String [] values = custTableModel.getRowValues (selectedRow);
[code]....
Created a java.sql.connection object. Refering those obj inside public void run() { } If i declare as final inside a method, i can't refer those outside method due to scope. Cannot refer to a non-final variable dbConnObj inside an inner class defined in a different method...
View Replies View RelatedI have a question regarding best practice in using local variables as my method return variable. I have a method like this:
myReturnObject getMyObject(String input) {
myReturnObject myObject = null;
try {
myObject = helperObject.someOtherMethod().getObject(input); //getObject has return type myReturnObject
} catch (Exception e) {
//log any problems
}
return myObject;
}
And I'm wondering if I rewrite like this if I'll see some performance optimization benefit:
myReturnObject getMyObject(String input) {
try {
return helperObject.someOtherMethod().getObject(input); //getObject has return type myReturnObject
} catch (Exception e) {
//log any problems
}
return null;
}
myObject can be quite large -- so I'm wondering if I can omit the myReturnObject local variable instance if it'll save some work from the garbage collector.
I want to create a final array with final elements
{code}
final int[] array = {0, 1, 2, 3, 4, 5};
{code}
But here only the reference of the array is final , not it's elements ... So how can I do that??
"A constructor cannot be abstract, static, final, native, or synchronized."
I understand on why it can't be all of the above, except "final".
Why can't we have a final constructor, i understand constructors are not inherited, hence no chance/case of overriding etc. But why is it not allowed at all ?
Given the case I have an object which is assigned only once. What is the difference in doing:
public class MyClass {
private MyObj obj = new MyObj("Hello world");
private MyClass(){}
//...
}
and
public class MyClass {
private MyObj obj;
private MyClass(){
obj = new MyObj("Hello world");
}
//...
}
Is there a difference in performance or usability? (Given also the case there are no static calls expected) ....
The term "Local variable" is related to scope. That is a local variable is one which is defined in a certain block of code, and its scope is confined inside that block of code.And a "Member variable" is simple an instance variable.
I read in a discussion forum that when local variables are declared (example code below), their name reservation takes place in memory but they are not automatically initialized to anything. On the other hand, when member variables are declared, they are automatically initialized to null by default.
Java Code: public void myFunction () {
int [] myInt; // A local, member variable (because "static" keyword is not there) declared
} mh_sh_highlight_all('java');
So it seems that they are comparing local variables and member variables. While I think a member variable can also be be local in a block of code, isn't it?
My teacher has asked me one question that "What is difference between the final method and static method".
View Replies View RelatedI just wanted to know that why are final and abstract called as modifiers ,what is the essence of calling them as modifiers since there are two types of modifiers access modifiers and non-access modifiers so final and abstract come under the second category ,so why are these called as modifiers?
View Replies View RelatedI am unable to understand the meaning of this sentence "final reference variables must be initialized before the constructor completes.",What is trying to imply?
View Replies View Relatedwhy using the get method(c.get(c.HOUR_OF_DAY)); gives me the correct hour(currently 19) but directly accesing c.HOUR_OF_DAY returns 11 ? It shows In the documentation that HOUR_OF_DAY is public.
import java.util.*;
public class calendar2 {
public static void main(String[] args) {
new calendar2().timer();
}
private void timer() {
Calendar c=Calendar.getInstance();
//c.clear();
System.out.println(c.get(c.HOUR_OF_DAY));
System.out.println(c.HOUR_OF_DAY);
}
}
For this assignment you will be writing a grade book program. The program will work for one student. It will need to take as input the students name. The user will then be asked to input grades into three categories in this order:
1) homework;
2) quizzes;
3) tests.
The grades in a given category will be averaged to one number that is the average of all grades in that category. The final average will be the weighted average of each category, where homework is worth 25% quizzes are worth 25%, and test are worth 50%. Like this:
Homework Grades: 65, 70, 75, 80, 80 Homework Average: 74
Quiz Grades: 75, 80, 85, 80. Quiz Average: 80
Test Grades: 75, 80, 85, 75 Test Average: 78.75
Final Average = 0.25*HomeworkAvg + 0.25*QuizAvg + 0.50*TestAvg = 77.87
But i only have the average and i dont know how to move past that..
Heres my average code :
import java.util.Scanner;
public class Homework3 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
int gradeCount = 0;
int grades = 0;
int holder = 0;
[Code] .....
1 Can method declared as final be overridden and overloading ?
2 if A is static sub class of B. how to access a method in class A ?
Im working on a class to add to my final project but im getting a parsing error for the final bracket, i double checked to make sure im not missing any but im still getting an error
import java.util.Scanner;
public class totalprice
{
public static void main(String[] args)
{
scanner keyboard = new Scanner(System.in);
{
DecimalFormat num = new DecimalFormat("#.00");
char meal;
int ammount;
double cost;
[code]....
Which package or class i can find all the predefined keywords in java like "this" etc...
actually i want to know if this operator is itself final in nature or not from its syntax?
While reading head first java i encountered a problem(Pg. 90 chapter 4 - mixed messages).
Suppose in a class(say A) outside main() a counter variable is declared and initialized to 0.
In main() declared the array of objects of the class A.
Consider a while loop in which we increment the counter as follows:
public class A{
int counter = 0;
public static void main(String[] args){
A[] arr = new A[20];
int x = 0;
while(x<4){
arr[x] = new A(); //arr[] is array object
arr[x].counter += 1;
x++;
}
}
};
what is the final value of counter ? will it be the same for all array objects.
consider:
class A {
final Object b;
public A(C c) {
try {
b = c.someMethodThatMayThrowSomeException();
} catch (SomeException e) {
b = null; // This line results in compiler error: "variable b might already have been assigned"
}
} // take away b=null line and you get "variable b might not have been initialized" on this line
}
Why? How could 'b' be assigned if the exception was thrown?
Btw, the workaround is to wrap the method call:
private final Object initB() {
try {
return c.someMethodThatMayThrowSomeException();
} catch (SomeException e) {
return null;
}
}
and use b = initB(); in the constructor. But that seems like it should be unnecessary.
Given a reference variable : Car c1 = new Car();
when we create another variable and set it equal to the first : Car c2 = c1;
we're pointing c2 at the same car object that c1 points to (as opposed to pointing c2 at c1, which in turn points at the car). So if we have code like,
Car c1 = new Car();
Car[] cA = {c1, c1, c1, c1};
are we doing the same? Are we creating four *new* reference variables, each of which points at the same car (again as opposed to pointing them at c1 itself)? I think so, but want to make sure I'm understanding this correctly.
I'm new to Java and have been stuck on how to use a final declaration statement once it's made. Below is a class I'm creating with the intention of calling it under a main method. I don't understand if I'm supposed to do anything else, like do some sort of get/set, or if the final static line is all I need. And, I don't know how I call it to the main method once I do.
public class Shirt//class name.
{
int collarSize;//data field.
int sleeveLength;//data field.
public final static String MATERIAL = "cotton";//final data field for material.
[Code] ....
I made a heads or tails game but I'm getting a bug when the user says he doesn't want to play anymore. The statistics are printed as many times as the games played. If you want to test the code, write" cap" " pajura" and when the program says "Vrei sa mai joci?" that means "do you wanna play another one?" and you can answer with "da"(yes) or "nu"(nu) Here is the code:
import java.util.Scanner;
public class cap_sau_pajura{
private static int user;
private static int pc;
private static String converted;
static int usermove;
private static int castiguri = 0;
private static int pierderi = 0;
[code]....
I completed this program, everything looks fine as far as calculation and stuff, but the only problem I see is that when the program wants to print the final calculation the formatting is off a little. I will add the ending result at the end of the program.
import java.util.*;
import java.text.*;
public class FutureValueApp
{
public static void main(String[] args) {
[Code] ....
Result :
Future Value Calculation
Inv/Mo.RateYearsFuture Value
[$100.00, 2.0%, 2, $2,450.64]
[$100.00, 2.0%, 2, $2,450.64]
[$100.00, 2.0%, 2, $2,450.64]
[$100.00, 2.0%, 2, $2,450.64]
Also when we have 3 different users putting their information, I get this
Future Value Calculation
Inv/Mo.RateYearsFuture Value
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
[$100.00, 2.0%, 2, $2,450.64, $100.00, 2.0%, 3, $3,713.19, $200.00, 2.0%, 3, $7,426.38]
I have come across some code where the method signature is like,
public methodName(final String argument) {
...
}
I fail to grasp why final is needed here. Is it only because of the field immutabilty? What big picture am I missing in this case?