"Because X is a compile time constant, the compiler will Y"... But what exactly is a compile time constant? And how can we determine whether something is treated as such?Obviously, a compile time constant is a constant value that is known at compile time... ... Literals are, by definition, compile time constants -- as they are constants, known at compile time.
But the definition of a compile time constant is a bit more complex. To start, let's examine section 15.28 of the Java language specification.A compile-time constant expression is an expression denoting a value of primitive type or a String that is composed using only the following:
Literals of primitive type and literals of type String Casts to primitive types and casts to type StringThe unary operators +, -, ~, and ! (but not ++ or --)The multiplicative operators *, /, and %The additive operators + and - The shift operators <<, >>, and >>>The relational operators <, <=, >, and >= (but not instanceof)The equality operators == and !=The bitwise and logical operators &, ^, and |The conditional-and operator && and the conditional-or operator ||The ternary conditional operator ? : Simple names that refer to final variables whose initializers are constant expressions Qualified names of the form TypeName . Identifier that refer to final variables whose initializers are constant expressions
This is the full definition of a compile time constant. And as you can see, it contains more than just literals. In fact, literals are merely the first bullet point on the list. Also, note that a compile time constant can apply to any literal that is of primative or String type.The next few bullet points are the operations that can be applied to a constant at compile time. This list is actually pretty long, as it is possible to apply most of the operations at compile time. It may actually be easier to remember what can't be apply at compile time -- pre and post increment and decrement, instanceof operator, or any method calls, are not on the list.
The last few bullets are the most interesting. It is possible to use a variable in the expression -- provided that the variable is a compile time constant variable. So... what is a constant variable? Going back to the JLS (section 4.12.4 to be exact)..4.12.4 final Variables.A variable can be declared final. A final variable may only be assigned to once. It is a compile time error if a final variable is assigned to unless it is definitely unassigned (§16) immediately prior to the assignment.
We call a variable, of primitive type or type String, that is final and initialized with a compile-time constant expression (§15.28) a constant variable. Whether a variable is a constant variable or not may have implications with respect to class initialization (§12.4.1), binary compatibility (§13.1, §13.4.9) and definite assignment (§16).The last part of the definition is the relevant part (I still find it amazing that this is that well hidden in the specification). To be a variable that is a compile time constant, the variable needs to be...declared as finalhave a primative or String typeinitialized (on the same line as the declaration)assigned to a compile time constant expression.
I was wondering what happens to the API packages I've imported at compile time. Are they compiled to classes and placed In the same file as the class containing the Import command ?
The reason I'm asking Is because I've noticed the src.zip file Is not In the JRE and since the JRE Is all that's needed to run an app , I'd like to understand what the import command does.
I keep getting this error when compiling the code . I think its got to do with the Tomcat server not working well with the textpad app...I'm using windows 8.1(for the course I have to use Textpad 4.7.3 & Apache Tomcat 5.5.7 Server) :
C:UsersReignDownloadsIntec - Codecourse technology59850dChapter 12WorkWebStocks.java:20: package javax.servlet does not exist import javax.servlet.*; ^ C:UsersReignDownloadsIntec - Codecourse technology59850dChapter 12WorkWebStocks.java:21: package javax.servlet.http does not exist import javax.servlet.http.*;
[code]....
tom cat is running as a service it shows started in the tom cat app and as a running service in windows services !!!
I have a code in which I am reading input from System.in and Destination is some where else
Here is my code
File file=new File("D:/output.txt"); OutputStream os=new java.io.FileOutputStream(file); Scanner scanner=new Scanner(System.in); System.out.println("Enter Data to write on File"); String text=scanner.nextLine(); int c=Integer.parseInt(text); int a; while((a=c.read())!=-1) os.write(a); System.out.println("File Written is Successful");
In the line while((a=c.read())!=-1)
a compile time error is shown "cannot invoke read on primitive data type int"
"final" makes sure the constant has the same value and prevents it from being changed. So why add "static" to make it a constant. I figured the reason a few weeks back but don't remember it now.
How to make sure that a variable passed to a method isn't altered by the method? I know in C++ you can do something like
void aMethod(const Object &item) { ........ }
I know that you can stop a variable from being reinitialized in java by doing this
void aMethod(final Object item) { ......... }
However, that won't stop it from calling a setter on the item or changing something in it. Is there some other keyword out there that can do this? I just found that java DOES recognize the const keyword but that it really is useless.
So, any practical way that const can be further approximated in java beyond using final?
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.
I am trying to write a java program that prints out the number that is the mathematical constant e. As you input a number, the larger it gets , the closer it comes to 2.71828 . Here is my code:
//taylor series that prints out e^1=1+1/1!+1/2!+1/3!+..... import java.util.Scanner; public class taylor_1 { public static void main(String args[]) { Scanner input=new Scanner(System.in); int factorial =1;
I am working on an assignment that I can't seem to figure out the final part to. The program takes in course data such as the time the class starts and how long it lasts. The time is in military time (0000 - 2400)
I need the output time to be the time the class started, plus the length of the class, and displayed in military time.
I can't for the life of me figure out how to do this. I have gotten a program that works for this time and minutes, and displays the correct 1020. But when I change the information to say
Start time: 0700 Length = 90 minutes
I get:
Endtime = 90
90 is technically correct, the way the formula is setup, but I need it to display 0900 not 90.
Here is the code that I have. Be easy, I'm still learning, and this is just the file I created to get the formula to work. Also, the verbose in here is just for my own debugging to make sure values should be what I'm expecting them to be.
public class calc { public static void main(String[] args) { double hours, minutes, length; double temp; int time = 2400; hours = time / 100; System.out.println("Hours are: " + hours);
I have two classes. time_runner is used for testing my code.
This is what I'm using to test my code:
class time_runner { public static void main(String str[]) throws IOException { Time time1 = new Time(14, 56); System.out.println("time1: " + time1); System.out.println("convert time1 to standard time: " + time1.convert()); System.out.println("time1: " + time1); System.out.print("increment time1 five times: "); time1.increment();
[code]....
The two constructors are "Time()", which is the default constructor that sets the time to 1200, and "Time(int h, int m)" Which says If h is between 1 and 23 inclusive, set the hour to h. Otherwise, set the hour to 0. If m is between 0 and 59 inclusive, set the minutes to m. Otherwise, set the minutes to 0. Those are my two constructors that I pretty much have down. The three methods however I'm having trouble with. The "String toString()" Returns the time as a String of length 4. The "String convert()" Returns the time as a String converted from military time to standard time. The "void increment()" Advances the time by one minute.
public class Time { private int hour; private int minute; public Time(int h, int m) { if(h > 1 && h < 23) hour = h;
import javax.swing.*; import java.awt.event.*; public class BookStore extends JFrame{ private JPanel panel; private JLabel question; //This will be where the question is. private JTextField NumofBooks; //this is where the user will enter the number of books private JButton OKButton,ClearButton,ExitButton; //Will give the user the points, cancel the points, and exit private final int WINDOW_WIDTH = 310; //Need to make it visible private final int WINDOW_HEIGHT = 100;
i would like to ask what does exactly do the command mvn compile. What is happening with the code, when i write this command? And why is it necessary for running the code?
I created Myproject folder. Inside I have 3 folders:
/lib /src /bin
Inside src there is a .java file:
public class hello_world{ public static void main(String[] args){ System.out.println("Hi, from hello_world"); seba.st.hello_world_package test1 = new seba.st.hello_world_package(); test1.packFunc(); } }
inside lib is a packEx.jar file which I created from this .java file:
package seba.st; public class hello_world_package{ public void packFunc(){ System.out.println("hi from pack_func!"); } }
I am trying to run this program from terminal with this command
javac -d bin -sourcepath src -cp lib/packEx.jar src/hello_world.java
and I get this error:
src/hello_world.java:11: error: cannot find symbol test1.packFunc(); ^ symbol: method packFunc() location: variable test1 of type hello_world_package 1 error
What am I doing wrong ? How can I compile and run this program from terminal?
both will in theory never go in more interestingly this will compile
for(;false == false;){}
To me it seems like this is a parsing issue that could have been solved by the people who originally wrote the parser but they made a decision that there must be a relational operator in the condition declaration.
import java.util.Calendar; import java.util.GregorianCalendar; public class CalendarCalc { public CalendarCalc (){} private static void printCalendarMonthYear (int month, int year)
[Code] .....
IDE is telling me this:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method printCalendarMonthYear(int, int) is undefined for the type CalendarDisplay
at CalendarDisplay.main(CalendarDisplay.java:46)
Btw, I have a main class. This is just the class responsible for doing calculations.
i am trying to work through the Murach's Java Servlets and JSP book. I am stuck however. I keep getting a HTTP Status 500 - Unable to compile class for JSP.
I am using Eclipse Kepler, JDK 1.7, and Tomcat v7.0 server.
Its a fairly simple program that takes in user information, first name, last name, and an email and processes the information, saving the data to a text file.
------------------------------------------------ I have two Java classes: User and UserIO -------------------------------------------------
//User.java package business; public class User { private String firstName; private String lastName; private String emailAddress; public User(String firstName, String lastName, String emailAddress){
I am making a simple mod/hack for a game programmed in Java. I located the .class file I needed and deobfuscated it and then decompiled it. After that I went in and made a very simple adjustment that I wanted to make. Unfortunately I can across a problem when trying to compile the file! The file won't compile because there are errors. The reason there are errors is because this is just one file out of an entire game. I know this my seem weird, but is there some way I can compile the file with the errors.
QUESTION: A class called MyCircle, which models a circle with a center (x, y) and a radius, is designed as shown in the class diagram. The MyCircle class uses an instance of MyPoint class (created in the previous exercise) as its center. The class contains: -Two private instance variables: center (an instance of MyPoint) and radius (int). -A constructor that constructs a circle with the given center's (x, y) and radius. -An overloaded constructor that constructs a MyCircle given a MyPoint instance as center, and radius. -Various getters and setters. -A toString() method that returns a string description of this instance in the format "Circle @ (x, y) radius=r". -A getArea() method that returns the area of the circle in double.
Write the MyCircle class. Also write a test program (called TestMyCircle) to test all the methods defined in the class.
My code:
public class MyCircle{ private MyPoint center; private int radius=1;
public MyCircle(int x, int y, int radius){ this.x = x; this.y = y; this.radius = radius;
I'v tried everything, i'v tried to create new path in enviornment variables i tried adding this path -->(C:Program FilesJavajdk1.8.0_20bin) to the end of the default path doesnt work i uninstalled and reinstalled and did the same thing over and it didnt work am i editing the files wrong ? what i do is write the hello world program in eclipse to make sure there arent any errors then copy and paste in note pad++ save it as a .java file and it doesnt work i tried save it in regular notepad as .java laso and it doesnt work iv done every thing i could possibly find on youtube is this stuff outdated ? is there a new way? this one one of the errors ill get
C:javat>javac helloworld.java helloworld.java:1: error: '{' exp public class helloworld.java { ^
And this is the code for that file im trying to compile
public class helloworld.java { public static void main (String args[]){ System.out.println("hello world"); } }
I made the XML file (web.xml) in C:Program FilesApache-Tomcat-7apache-tomcat-7.0.53webappsDEMOWEB-INF folder. In command prompt I went to the classes folder
I am totally new to programming in every way, shape or form, and I'm working my way through the Head First Java book (2nd ed). I have just finished copying the code for the initial BeatBox app, the one starting on page 420. When I try to compile it, I get these errors:
BeatBox.java:36: cannot find symbol symbol : constructor Box(int) location: class Box Box buttonBox = new Box(BoxLayout.Y_AXIS); ^ BeatBox.java:40: cannot find symbol symbol : method add(javax.swing.JButton) location: class Box buttonBox.add(start);
[code]....
I doubt that this is relevant, but I'm running Mac OS X, coding in TextWrangler and compiling with Terminal. Java version is 1.6.0_24.
programming altogether and after almost reaching half way in the 'Head first java' book I decided to try and apply some of what I've learnt so far and write my first 'Object orientated' program. As this is pretty much the first program I've ever written, I decided to write a program to ask for two integers and add them both together and then present them to the user (the goal eventually being a basic fully working command line calculator with +,-,* and /. I'm expecting many compile errors but not the following errors below.
I have three .java files contained within a folder and after trying to figure out how to compile all three files (as they use one another) all at once, I came across this ---> javac *.java
so I typed this in the command line whilst in the directory containing the three files assuming *.java is the best approach and then I receive the following errors:
inputOutput.java:10: error: cannot find symb c.addition() = intIn.nextInteger(); ^ symbol: variable c location: class inputOutput