diff --git a/CHANGES.md b/CHANGES.md
index 3686fe9b8e..dd12d29ebd 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -5,6 +5,7 @@ Themes:
Grammars:
+- fix(java) prevent false positive variable init on `else` [Josh Goebel][]
- enh(php) named arguments [Wojciech Kania][]
- fix(php) PHP constants [Wojciech Kania][]
- fix(angelscript) incomplete int8, int16, int32, int64 highlighting [Melissa Geels][]
diff --git a/src/languages/java.js b/src/languages/java.js
index 8c55aae215..b46857485e 100644
--- a/src/languages/java.js
+++ b/src/languages/java.js
@@ -187,7 +187,7 @@ export default function(hljs) {
},
{
begin: [
- JAVA_IDENT_RE,
+ regex.concat(/(?!else)/, JAVA_IDENT_RE),
/\s+/,
JAVA_IDENT_RE,
/\s+/,
diff --git a/test/markup/java/bugs.expect.txt b/test/markup/java/bugs.expect.txt
new file mode 100644
index 0000000000..2f3fd93f88
--- /dev/null
+++ b/test/markup/java/bugs.expect.txt
@@ -0,0 +1,6 @@
+
+
+if ( O == l )
+ l = O1;
+else
+ a = 01;
diff --git a/test/markup/java/bugs.txt b/test/markup/java/bugs.txt
new file mode 100644
index 0000000000..409f7ccafe
--- /dev/null
+++ b/test/markup/java/bugs.txt
@@ -0,0 +1,6 @@
+
+// `else x =` should not be detected as a variable creation
+if ( O == l )
+ l = O1;
+else
+ a = 01;