1. 一个.java文件可以有多个class,但只能有一个public修饰的类并且文件名必须与之一致(要么都不用public,编译时javac 文件名.java,运行时java 指定类名就ok)
/**
* 文件名 cwk.java
* cmd javac cwk.java
* java Demo运行Demo输出"hello"
* java Demo1输出"cwk"
* @author Hainuo
*
*/
class Demo {
public static void main(String[] args) {
System.out.println("hello");
}
}
class Demo1{
public static void main(String[] args){
System.out.println("cwk");
}
}
2.if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;
int x = 0;
if(x==2){}else{}
x = (x==2) ? 1: 0;
三元运算符:
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
3.&和&&的特点:
&:无论左边是true是false。右边都运算。(&通常用于位运算(与),逻辑与运算有时会抛出NullPointerException)
&&:当左边为false时,右边不运算。
String str = null;
if(str != null && str.equals("")){}
if(str != null & str.equals("")){} //会抛出NullPointerException //str.equals("")-->null.equals("")而null不能用作比较("".equals(null)不会抛出空异常)
//********************************
int x1 = 0;
if(x1 == 2 && x1++ >0){}System.out.println(x1); //x1=0
if(x1 == 2 & x1++ >0){}System.out.println(x1); //x1=1
int x = 2;
int y = 1;
x = x + y ;
y = x - y;
x = x - y;
System.out.println(x + "," + y);// 1,2
int x1 = 2;
int y1 = 1;
x1 = x1 ^ y1;
y1 = x1 ^ y1;
x1 = x1 ^ y1;
System.out.println(x1 + "," + y1);//1,2
5.==与equals
/**
* "==" 用于地址比较(两变量所对应的内存中所存储的数值是否相同,用于比较两基本类型或两个引用变量是否相等)
* "equals" 用于字符串内容比较
*/
String str1 = new String("cwk");
String str2 = new String("cwk");
System.out.println(str1 == str2);//false -->地址比较两变量所指向的地址不同
System.out.println(str1.equals(str2));//true -->内容相同
6.运算 >>(有符号右移) | <<(有符号左移) | >>>(无符号右移)
负数右移有余+1;正数右移有余去除
byte x =127;//01111111 System.out.println(x & 0x0f);//15 (00001111)获取低四位 System.out.println(x & 0xf0);//112(01110000)获取高四位(相对byte(8位)类型) System.out.println(-3>>1); //-2 System.out.println(-3<<1); //-6 System.out.println(-3>>>1);//2147483646 无符号右移最高位补0(int(32位)) System.out.println("-3:\t"+Integer.toBinaryString(-3)+ "-->" + Integer.toHexString(-3)); System.out.println("-3>>1:\t"+Integer.toBinaryString(-3>>1)+ "-->" + Integer.toHexString(-3>>1)); System.out.println("-3<<1:\t"+Integer.toBinaryString(-3<<1)+ "-->" + Integer.toHexString(-3<<1)); System.out.println("-3>>>1:\t"+Integer.toBinaryString(-3>>>1)+ "--> " + Integer.toHexString(-3>>>1));
//-------结果------------- 15 112 -2 -6 2147483646 -3: 11111111111111111111111111111101-->fffffffd -3>>1: 11111111111111111111111111111110-->fffffffe -3<<1: 11111111111111111111111111111010-->fffffffa
7.switch(int类型(byte、char、short) || java7.0支持String类型但不包括StringBuilder和StringBuffer)
byte x = 1;
switch(x){
case 1:
System.out.println("hh");
break;
case 2:
System.out.println("cwk");
break;
default: System.out.println("yy");
}
//-------结果------
hh
//#####################
byte x = 1;
switch(x){
case 1:
System.out.println("hh");
//break;
case 2:
System.out.println("cwk");
//break;
default: System.out.println("yy");
}
//-------结果---------
hh
cwk
yy
8. 什么时候定义变量?
当数据不确定的时候。需要对数据进行存储时。
就定义一个变量来完成存储动作。