Making Math vector implementation using java
Question 1 not exactly the right place to ask here I think. Perhaps aks that one as a question on StackOverflow instead? For the i it's possible by directly putting in the î (type ^ first then i to make it 1 character, also works for ê û ô and â, not directly possible in standard character sets for j or k as far as I know).
Unless if you want to just use an alternative notation. For example printing (x,y,z) instead of the xî yj zk. But that would be trivial to implement yourself once you do decide to do it like that.



For question 2 I suggest you get yourself a good IDE (for example IntelliJ or Eclipse) and have it generate an equals and hashcode function for you. Doing that correctly can be tricky.



The code you have now looks pretty good as is.

The only big issue I have is the package visibility of the x y and z fields. The default best practice would be to make them private and provide getters to access them if needed. Also only provide setters if it makes sense to change the values (usually not the case).

Alternatively you might want to access the fields often in which case calling getters could become annoying. In that case I would suggest making the class immutable and provide public access the the fields.

public class Vector {
    public final double x;
    public final double y;
    public final double z;


Immutability is a nice property to have, especially if you want to use the class in a multithreaded environment. (Even if you make the fields private it's still a good idea to make them final as well).

A last smaller issue I want to mention is to always use braces to prevent silly mistakes. Especially if these silly mistakes can take hours to find.



lastly some minor nitpicks

the usual java convention says to put the opening bracket on the same line. For example:

 public String getReducedStringNotation() {
    String not="";
    if(this.x!=0) {
        if(this.x==(int)this.x) {  
            not=not+(int)this.x+"i^+";
        } else {
            not=not+this.x+"i^+";
        }
    }


The good thing is that you were consistent, so not really a complaint here.



You don't need this variable here:

public double modulus() {
    double mod=Math.sqrt(Math.hypot(x,Math.hypot(y,z)));
    return mod;
}


You can directly return it return Math.sqrt(Math.hypot(x,Math.hypot(y,z)))

Also, should this be

public double modulus() {
    return Math.sqrt(x*x + y*y + z*z);
}


instead?



The following line could also be a direct return statement:

    if(xr==yr&amp;&amp;yr==zr&amp;&amp;zr==xr)
        return true;
    else
        return false;


replace it with:

return xr==yr &amp;&amp; yr==zr &amp;&amp; zr==xr;




not the best variable name. I would prefer notation or result in most cases.

More specifically to actually understand what this does:

    if(not.equals(""))
    return null;


Which brings me to my last nitpick. Wouldn't it be better to return that empty string here? NullPointerExceptions are one of the most annoying thing to deal with in Java. I prefer some minor "huh?" moments when there was an empty string where I would expect a Vector over my program crashing with a NPE.