JAVA基础重温

• Java的出现:
1994年 Oka语言
1995年, Java语言
• SUN公布第一版编译器JDK1.0
• Sun:Stanford University Network
2009年,甲骨文公司宣布收购Sun。
2010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。2011年,甲骨文公司举行了全球性的活动,以庆祝Java7的推出,随后Java7正式发布。
2014年,甲骨文公司发布了Java8正式版。
Java三种核心机制
• Java 虚拟机(Java Virtual Machine)
• 代码安全性检测(Code Security)
• 垃圾收集机制(Garbage collection)

JAVA工作原理
java工作原理:

由四方面组成:
(1)Java编程语言
(2)Java类文件格式
(3)Java虚拟机
(4)Java应用程序接口
当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类,通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用。
JRE (The Java Runtime Environment)和JDK的区别
•JDK=JRE+tools(一些工具)这些工具包括编译工具啊, 检查啊,打包等等工具。
JDK提供的工具
java编译器 javac.exe
java执行器 java.exe
文档生成器 javadoc.exe
java打包器 jar.exe
java调试器 jdb.exe
• JRE = JVM + API(Lib )
• JRE运行程序时的三项主要功能:
加载代码:由class loader 完成;
校验代码:由bytecode verifier 完成;
执行代码:由 runtime interpreter完成。
简单来说:
• 要开发Java程序,要下载JDK
• 注意:如果只运行Java程序,则下载JRE
• 理解
为何Java是跨平台的(java生成的class文件与平台无关)
为何Java是安全的(class文件装载进去的时候会有代码验证)
(Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。
• 代码安全性检测(Code Security)

JAVA数据类型

基本类型和引用类型的区别
字面量:
字面量就是字面意义的值。java有三大类字面量。
分别是:基本类型字面量、字符串类型字面量、和适用于所有引用型的字面量null;
【字面量:18、类型:int】【字面量:23.4f、类型:float】
【字面量:true、类型:boolean】【字面量:false、类型:boolean】
【字面量:“abc”、类型:String】【字面量:’a’、类型:char】
【字面量:null、类型:】
注:
null无类型标识,是所有引用型共有的字面量。

为何Java字符采用Unicode编码,而不是常规的ASCII码?

字符集的每一个字符都有位移的二进制编码,借助字符集客定义各类标识、运算或者标识数据。
java使用2字节Unicode编码作为其字符集,可表达2^16个编码。
注意:对同样的字符,如’a’,在C、C++中占一个字节,而在java中占两个字节。
ASCII码是基于英文字符的编码系统。虽然许多国家为了方便本国信息的处理,在ASCII码的基础上编制出本国字符集,但不同的字符集系统间信息交互会有障碍。采用Unicode字符集中已经包含各国文字,这样无论使用哪种语言,进行信息交互时均可采用Unicode编码。

整数类型

Java语言的整型常量默认为int型;
Java**浮点型常量默认为**double型,

• Java中没有“无符号数”  可以用long来处理无符号整数(uint)

浮点型

15/4和15.4/2

这个15/4,如果左右都是整数啊,它表示整数除法。 也就是说它不管小数了,所以15/4呢 等于3。所以这个一定要注意。那如果是一边15.4/2 有 实数呢,它就变成实数除法了,比如这个就是7.5。
&和&和||和|
在运行上,&两边的条件都要判断(不管前面的是ture还是false),而&&先判断前面的,若为false,则后面的不再判断。
&&:两边为真才是真,一边为假就是假。
||:一边为真就是真,两边为假才是假。
例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。

表达式中的类型转换

• 当有不同种类的混合运算时:
• int long float double
• 整型提升
所有的byte, short, char 参与算术运算等转为int

break和continue
break
continue
break跳出循环,continue是跳到下一个循环。

例子:
36选7

class Rnd36to7
{
    public static void main(String[] args)
    {
        int a[] = new int[7];
        for( int i=0;i<a.length;i++)
        {
            one_num://标签,重新产生随机数
            while(true)
            {
                a[i] = (int)( Math.random()*36 ) +1;//1到36随机出一个数

                for( int j=0;j<i;j++ ){ 
                    if( a[i]==a[j] ) continue one_num;//判断是否与产生的随机数冲突,冲突就重新产生随机数
                }
                break;
            }
        }
        for( int num: a) //这种语句是只读式的遍历
            System.out.print( num+" " ); 
        System.out.println();
    }
}
/**
 *两层循环
 *求101到200以内的素数(质数)
 */
public class Prime100Continue{
    public static void main( String args[ ] ){
        System.out.println(" **** 100--200的质数 ****");
        int n=0;
        outer: for(int i=101;i<200;i+=2){ //外层循环(每次加2,只考虑基数)
            for(int j=2; j<i; j++){ //内层循环(对于每个i【j从2到小于i,也就是2到i-1】去判断能不能除)
                if( i%j==0 )        //不是质数,则继续外层循环
                    continue outer;  //直接进入到下一个i(下一个循环)
            }
            System.out.print(" "+i);//显示质数
            n++;                    //计算个数 
            if( n<10 )              //未满10个数,则不换行
                continue;   
            System.out.println( );
            n=0;
        }
        System.out.println( );
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值