——年金波老师上课笔记
编译执行java文件
F:\杰普培训笔记>javac -d . ch01/HelloWorld.java
F:\杰普培训笔记>java ch01.HelloWorld
Hello World!
F:\杰普培训笔记>java ch01/HelloWorld这样也可以
Hello World!
生成Javadoc:标准的注释文档(html)
F:\杰普培训笔记\core_java>javadoc -d doc ch02
F:\杰普培训笔记\core_java>javadoc -author -version -d doc ch02
window下默认字符编码:GBK
linux下的默认字符编码:utf-8
生成javadoc:标准的注释文档(html)
javadoc -d doc ch02;(不显示单行注释和多行注释。不显示)
win下默认的字符编码是:gbk
linux下默认编码是:utf-8
-d:生成的文档放在哪里
-author:生成作者
-version:生成版本
java api用javadoc来生成的
java内存模型
1.堆区(heap):放置新生成的对象
2.栈区(stack):存在我们程序运行过程中的变量
变量:内存节点的值可以被重写
常量:内存节点的值不可以被重写
3.方法区:方法的信息,程序运行过程中类的信息
4.常量区静态存储区:存放程序运行过程中的常量
程序中随着数据的增加,堆地址不断地向高地址增加,栈地址不断地向低地址减小
String a ="abc";//常量区
String b =newString ("abc");//堆区
String c =newString ("abc");
String d ="abc";
a==b错b==c错(两个不同的对象)a==d对
==:用来比较地址(对于对象来说),比较值(对于基本类型)
java运行环境的搭建
JDK:JAVA DEVELOPMENT TOOLKIT //java开发
JRE:JAVA RUNTIOME ENVIRONMENT //java运行环境
jdk:编译源代码同时运行class
jre:运行class文件
配置环境变量
Unix:PATH:命令搜索路径
cat .bashrc
oracle_home :说明了oracle的安装路径
java_home
env查看所有环境变量
将java_home的bin路径添加到path里面
unix用':'分隔路径
path=$path:$java_home/bin
配置:
source.bashrc:环境变量立刻生效。
java中的类型
java是强类型语言,在定义变量的时候必须声明变量的类型
弱类型:声明变量不需要指定的类型语言
html css js对于js来说是弱类型语言
在js里面声明任何一个变量都用变量一个声明var
强类型的好处:在编译期进行类型检查,减少程序出错的概率。
强类型的坏处:灵活性差
1.基本类型
八种:
表示整数的:4个int(32位),long(64位),short(16位),byte(8位)
表示小数的(浮点数):2个float,double
表示布尔类型的:boolean(true|false)表示判断条件
便是字符类型:char
2.引用类型
object类:任何自定义的类都继承object
表示字符串的:多个字符
String用来声明字符串(java.long.String)
ch02/PrimitiveTest.java
引用类型:类类型
类:对现实实体的抽象
包含属性和方法(函数)
属性:描述现实的实体
Person:name gender age
方法:操纵属性
java中的基本数据类型
例1:
packagech02;
publicclassPrimitiveTest
{
publicstaticvoidmain(String []args)
{
intivar1=0x11;//16进制
intivar2=011;//8进制
intivar3=17;//10进制
floatfvar1=12.5e5f;
doubledvar1=0.1234d;
System.out.println("fvar1="+fvar1);
System.out.println("dvar1="+dvar1);
booleanflag=true;
System.out.println("boolean:"+flag);
System.out.println("ivar1="+ivar1);
System.out.println("ivar2="+ivar2);
System.out.println("ivar3="+ivar3);
chargender='F';
chartest='\u0065';//unicode码
System.out.println("gender:"+gender);
System.out.println("test:"+test
例2:
//java中的基本数据类型.
publicclassPrimitiveTypeTest {
//private static PrimitiveTypeTest primitiveType;
privateinti1;
publicintgetI1()
{
returni1;
}
publicInteger getI2()//调用它是因为自动拆箱、装箱,所有不报错
{
returni1;
}
publicintobtainInt()
{
returni1;
}
/**
public void initVal()
{
System.out.println("-----------------initVal int i1:"+i1);
primitiveType=new PrimitiveTypeTest();
}
*/
privateInteger i2;
publicInteger getInteger()
{
returni2;
}
privatebyteb1;
publicByte getB1(){
returnb1;
}
booleanbool;
publicBoolean getBoolean()
{
returnbool;
}
shortsrt;
publicshortgetShort()
{
returnsrt;
}
longlg;
publiclonggetLong()
{
returnlg;
}
floatflt;
publicfloatgetFloat()
{
returnflt;
}
doubledble;
publicdoublegetDouble()
{
returndble;
}
charcha;
publicchargetChar()
{
returncha;
}
publicstaticvoidmain(String[]args){
PrimitiveTypeTest primitiveType=newPrimitiveTypeTest();
// byte
System.out.println("基本类型:byte二进制位数:"+Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE="+Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE="+Byte.MAX_VALUE);
//Byte b1=new Byte("0");
//System.out.println("Byte默认赋值为:"+b1);
System.out.println("byte默认赋值为:"+primitiveType.getB1());
System.out.println("-----------------------------------");
//-------------------short-----------------------
System.out.println("基本类型:short二进制位数:"+Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE="+Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE="+Short.MAX_VALUE);
System.out.println("short默认赋值为:"+primitiveType.getShort());
//Short s1;
//short s2;
//System.out.println("Short默认赋值为:"+(s1==0));
//System.out.println("short默认赋值为:"+s2);
System.out.println("-----------------------------------");
//-------------------------int-------------------------
System.out.println("基本类型:int二进制位数:"+Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE="+Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE="+Integer.MAX_VALUE);
//Integer i1;
//System.out.println("Integer默认赋值为:"+(i1==0));
//只有通过new了之后才能取到默认值
System.out.println("int默认赋值为:"+primitiveType.getI1());
System.out.println("int默认赋值为:"+primitiveType.getI2());
System.out.println("int默认赋值为:"+primitiveType.obtainInt());
System.out.println("Integer默认赋值为:"+primitiveType.getInteger());
//System.out.println("int默认赋值为:"+i1);
System.out.println("-----------------------------------");
//--------------------------long-------------------
System.out.println("基本类型:long二进制位数:"+Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE="+Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE="+Long.MAX_VALUE);
System.out.println("long默认赋值为:"+primitiveType.getLong());
//Long l1;
//long l2;
//System.out.println("Long默认赋值为:"+(l1==0));
//System.out.println("long默认赋值为:"+l2);
System.out.println("-----------------------------------");
//------------------------float---------------------------
System.out.println("基本类型:float二进制位数:"+Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE="+Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE="+Float.MAX_VALUE);
System.out.println("float默认赋值为:"+primitiveType.getFloat());
//Float f1;
//float f2;
//System.out.println("Float默认赋值为:"+(f1==0));
System.out.println("-----------------------------------");
//-------------------------double------------------------
System.out.println("基本类型:double二进制位数:"+Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE="+Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE="+Double.MAX_VALUE);
System.out.println("double默认赋值为:"+primitiveType.getDouble());
//Double d1;
//double d2;
//System.out.println("Double默认赋值为:"+(d1==0));
//System.out.println("double默认赋值为:"+d2);
System.out.println("-----------------------------------");
//---------------------char----------------------
System.out.println("基本类型:char二进制位数:"+Character.SIZE);
System.out.println("包装类:java.lang.Character");
//以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+(int)Character.MIN_VALUE);
//以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+(int)Character.MAX_VALUE);
System.out.println("char默认赋值为:"+primitiveType.getChar());
//Character c1;
//char c2;
//System.out.println("Character默认赋值为:"+(c1=='\0'));
//System.out.println("char默认赋值为:"+c2);
System.out.println("-----------------------------------");
//-----------------------Boolean---------------------
System.out.println("包装类:java.lang.Boolean");
Boolean b=newBoolean(false);
System.out.println("boolean默认赋值为:"+primitiveType.getBoolean());
System.out.println("-----------------------------------");
}
}
二进制:原码、反码、补码
对于有符号的数而言(Java中全都是有符号的数)二进制的最高位是符号位:0表示正数,1表示负数
正数的原码,反码,补码都一样(直接为此数二进制数表示)
负数的原码,符号为1,其余各位为此数的二进制表示
负数的反码=它的原码符号不变,其它位取反(1à0,0à1)
负数的补码=它的反码+1
0的反码、补码都是0
java中没有无符号数,换言之,java中的数都是有符号的
在计算机运算的时候,都是以补码的方式运算的
例:1-2=1+(-2)
计算[1+(-2)]在计算机中是以补码的方式运算的,首先计算:
[1的补码]+[(-2)的补码]
[1的补码]=【0000000000000000000000000000001】
[(-2)的原码]=【1000000000000000000000000000010】
[(-2)的反码]=【1111111111111111111111111111101】
[(-2)的补码]=【1111111111111111111111111111110】
[1+(-2)的补码]=[1的补码]+[(-2)的补码]=【1111111111111111111111111111111】
然后,将[1的补码]+[(-2)的补码]=[(1+(-2))的补码]à[1+(-2)的原码]:
[1+(-2)的补码– 1]=【1111111111111111111111111111110】
[(1-2)原码]= [{1+(-2)的补码– 1}符号位不变,其它各位取反]=【1000000000000000000000000000001】
即:[(1-2)原码]=【1000000000000000000000000000001】=-1
位运算符:
按位与&:两位全为1,结果为1
按位或|:两位有一个为1,结果为1
按位异或^:两位一个为0,一个为1,结果为1
按位取反~:0à1,1à0
例:
~-5=4 (在计算机中,取反运算符是给一个数补码取反)