diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/BooleanOperatorsTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/BooleanOperatorsTests.java
index 23dfdae..123ec55 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/BooleanOperatorsTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/BooleanOperatorsTests.java
@@ -39,25 +39,25 @@
 		String typeName = value.getReferenceTypeName();
 		assertEquals("boolean or boolean : wrong type : ", "boolean", typeName);
 		boolean booleanValue = ((IJavaPrimitiveValue)value).getBooleanValue();
-		assertEquals("boolean or boolean : wrong result : ", xBooleanValue | xBooleanValue, booleanValue);
+		assertEquals("boolean or boolean : wrong result : ", xBooleanValue || xBooleanValue, booleanValue);
 
 		value = eval(xBoolean + orOp + yBoolean);
 		typeName = value.getReferenceTypeName();
 		assertEquals("boolean or boolean : wrong type : ", "boolean", typeName);
 		booleanValue = ((IJavaPrimitiveValue)value).getBooleanValue();
-		assertEquals("boolean or boolean : wrong result : ", xBooleanValue | yBooleanValue, booleanValue);
+		assertEquals("boolean or boolean : wrong result : ", xBooleanValue || yBooleanValue, booleanValue);
 
 		value = eval(yBoolean + orOp + xBoolean);
 		typeName = value.getReferenceTypeName();
 		assertEquals("boolean or boolean : wrong type : ", "boolean", typeName);
 		booleanValue = ((IJavaPrimitiveValue)value).getBooleanValue();
-		assertEquals("boolean or boolean : wrong result : ", yBooleanValue | xBooleanValue, booleanValue);
+		assertEquals("boolean or boolean : wrong result : ", yBooleanValue || xBooleanValue, booleanValue);
 
 		value = eval(yBoolean + orOp + yBoolean);
 		typeName = value.getReferenceTypeName();
 		assertEquals("boolean or boolean : wrong type : ", "boolean", typeName);
 		booleanValue = ((IJavaPrimitiveValue)value).getBooleanValue();
-		assertEquals("boolean or boolean : wrong result : ", yBooleanValue | yBooleanValue, booleanValue);
+		assertEquals("boolean or boolean : wrong result : ", yBooleanValue || yBooleanValue, booleanValue);
 		} finally {
 		end();
 		}
@@ -72,25 +72,25 @@
 		String typeName = value.getReferenceTypeName();
 		assertEquals("boolean and boolean : wrong type : ", "boolean", typeName);
 		boolean booleanValue = ((IJavaPrimitiveValue)value).getBooleanValue();
-		assertEquals("boolean and boolean : wrong result : ", xBooleanValue & xBooleanValue, booleanValue);
+		assertEquals("boolean and boolean : wrong result : ", xBooleanValue && xBooleanValue, booleanValue);
 
 		value = eval(xBoolean + andOp + yBoolean);
 		typeName = value.getReferenceTypeName();
 		assertEquals("boolean and boolean : wrong type : ", "boolean", typeName);
 		booleanValue = ((IJavaPrimitiveValue)value).getBooleanValue();
-		assertEquals("boolean and boolean : wrong result : ", xBooleanValue & yBooleanValue, booleanValue);
+		assertEquals("boolean and boolean : wrong result : ", xBooleanValue && yBooleanValue, booleanValue);
 
 		value = eval(yBoolean + andOp + xBoolean);
 		typeName = value.getReferenceTypeName();
 		assertEquals("boolean and boolean : wrong type : ", "boolean", typeName);
 		booleanValue = ((IJavaPrimitiveValue)value).getBooleanValue();
-		assertEquals("boolean and boolean : wrong result : ", yBooleanValue & xBooleanValue, booleanValue);
+		assertEquals("boolean and boolean : wrong result : ", yBooleanValue && xBooleanValue, booleanValue);
 
 		value = eval(yBoolean + andOp + yBoolean);
 		typeName = value.getReferenceTypeName();
 		assertEquals("boolean and boolean : wrong type : ", "boolean", typeName);
 		booleanValue = ((IJavaPrimitiveValue)value).getBooleanValue();
-		assertEquals("boolean and boolean : wrong result : ", yBooleanValue & yBooleanValue, booleanValue);
+		assertEquals("boolean and boolean : wrong result : ", yBooleanValue && yBooleanValue, booleanValue);
 		} finally {
 		end();
 		}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/BreakpointMarkerUpdater.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/BreakpointMarkerUpdater.java
index afb621c..d567b8f 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/BreakpointMarkerUpdater.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/BreakpointMarkerUpdater.java
@@ -134,7 +134,7 @@
 			}
 			//if the line info is a valid location with an invalid line number,
 			//a line breakpoint must be removed
-			if(isLineBreakpoint(marker) & line == -1) {
+			if(isLineBreakpoint(marker) && line == -1) {
 				return false;
 			}
 			MarkerUtilities.setLineNumber(marker, line);
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/ExpressionInformationControlCreator.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/ExpressionInformationControlCreator.java
index b1ae6ee..3262c54 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/ExpressionInformationControlCreator.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/ExpressionInformationControlCreator.java
@@ -225,7 +225,7 @@
 		private IDialogSettings getDialogSettings(boolean create) {
 			IDialogSettings settings = JDIDebugUIPlugin.getDefault().getDialogSettings();
 			IDialogSettings section = settings.getSection(this.getClass().getName());
-			if (section == null & create) {
+			if (section == null && create) {
 				section = settings.addNewSection(this.getClass().getName());
 			}
 			return section;
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/BinaryBasedSourceGenerator.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/BinaryBasedSourceGenerator.java
index 54fea75..b6d42fe 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/BinaryBasedSourceGenerator.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/BinaryBasedSourceGenerator.java
@@ -359,7 +359,7 @@
 			}
 		}
 
-		if (isAnonymousType & hasEnclosingInstance) {
+		if (isAnonymousType && hasEnclosingInstance) {
 			source.append("};\n"); //$NON-NLS-1$
 		}
 
