/*
java中的八种基本数据类型:

    整数:
        byte 、 short 、 int 、 long

    小数:
        float double

    字符:
        char

    布尔:
        boolean 

字符串的类型: String(引用数据类型)

声明变量的方式:

    方式1: 数据类型  变量名 = 数据;

    方式2:数据类型  变量名1 , 变量名2 ......;

*/
class Demo1 {

    public static void main(String[] args) {
        String str = ""; //字符串还是字符呢?  ""字符串没有内容是属于一个空字符串。
        System.out.println(str);
    }
}
/*
数据类型转换: 

    小数据类型-------->大数据类型     自动类型转换

    大数据类型--------->小数据类型    强制类型转换

    强制类型转换的格式:

            小数据类型  变量名 = (小数据类型)大数据类型

数据类型转换要注意的细节:
    1. 凡是byte、short 、 char数据类型数据在运算的时候都会自动转换成int类型的数据再运算。
    2. 两个不同数据类型的数据在运算的时候,结果取决于大的数据类型。

*/
class Demo2
{
    public static void main(String[] args)
    {
        /*
        byte  b=  11;   // 一个字节   一两碗
        short s = b; // 把b变量存储的值赋予给s变量。 2字节 二两的碗
        int i = s;   // i是4字节
        long l = i;  // l 是8个字节。
        System.out.println(l);

        int i = 128;  //4个字节
        byte b =(byte) i;  // 1个字节
        System.out.println(b);  // -128

        //如果是负数,那么最高位肯定是1, 正数的二进制位的最高位是0。
        System.out.println(Integer.toBinaryString(-7));  //sun给我们提供一个功能 Integer.tobinaryString()  查看一个数据的二进制数据形式的。
        //   11111001(补码)

        凡是byte、short 、 char数据类型数据在运算的时候都会自动转换成int类型的数据再运算。

        byte b1 =1;
        byte b2 = 2;
        byte b3 = (byte)(b1+b2);
        System.out.println(b3); //3  

        System.out.println('a'+1); //98 

        两个不同数据类型的数据在运算的时候,结果取决于大的数据类型

        int i =10;
        long l = 20;
        i = (int)(i+l);
        System.out.println(i);

        */

        int i = 10;  //
        byte b = i;  // 一个整数没有加上任何标识的时候,默认是int类型的数据。
        //10 是一个常量, 编译器在编译的时候就能够确认常量的值了,byte b = 10,在编译到的时候
        //java编译器就会检查到10并没有超出byte的表示范围,所以允许赋值。
        //java编译器在编译 的时候并不能确认变量所存储的值,变量存储的值是在运行的时候才在内存中分配空间 的。
        System.out.println(b);

    }
}
/*
算术运算符:
    + (正数、加法、连接符)
    连接符的作用: 让任何的数据都可以与字符串进行拼接。
    如果+号用于字符串的时候,那么+号就是一个连接符,并不是 做加法功能了。

    连接符要注意:任何类型的数据与字符串使用连接符连接,那么结果都是字符串类型的数据。
    -
    *
    / (除法)
    %(取模、取余数)

*/
class Demo3 {

    public static void main(String[] args){
/*
        int i1 = 1; //
        int i2 = 2;
        //System.out.println(i1 +" world");  // "hello wolrd" ,    1 world

        // 计算机每次运算的时候只能取两个数据运算。
        System.out.println(1+2+3 +" world"+1+2+3); // 123world123   33world15

        1+2+3 +" world"+1+2+3
          3+3 +" world"+1+2+3
          6+" world"+1+2+3
           "6world"+1+2+3

        double a= 12.0;
        int b = 3;
        System.out.println(a/b); //3  4.0

        在java中做取模 运算的时,结果的正负号是取决于被除数。
*/
        System.out.println("结果:"+(10%3));
        System.out.println("结果:"+(10%-3)); // 1      1
        System.out.println("结果:"+(-10%3)); // -1    -1
        System.out.println("结果:"+(-10%-3)); //  -1  -1

    }
}
/*
    ++ (自增) :  自增就是相当于操作数+1.

    前自增:++位于操作数的前面。  比如: ++a;

    前自增:先自增,后使用。    

    后自增: 先使用,后自增。

*/
class Demo4
{
    public static void main(String[] args)
    {
        /*
        int a = 0;
        //int sum = ++a; //前自增。 a = a+1  , sum = a
        int sum = a++; //后自增  sum = 0 , a = a+1
        System.out.println("sum= "+ sum+ " a = "+ a); //1 

后自增在jvm的运行原理:

    因为后自增要使用 到没有+1之前的值,那么jvm会先声明一个变量用于保存没有+1之前的值。

    原理:
        1. int temp = i; // 声明了一个临时变量用于记录了i没有加1之前的值。
        2. 自增。  i = i+1;
        3. temp把用作了表达式 的结果。

*/
        int i = 0;
        i = i++; // 后自增...  后自增要使用到没有+1之前的值。
        System.out.println("sum ="+ sum+ "i= "+i);
    }
}
/*
自减: 操作数-1.

前自减: --位于操作数的前面。  --操作数

前自减: 先自减,后使用。

----------------------------------------------

后自减:--位于操作数的后面。 操作数--;

后自减: 先使用,后自减。

*/
class Demo5
{
    public static void main(String[] args)
    {
        /*
        int i = 1;
        int sum = --i;  //前自减   i = i-1 , sum = i;
        int sum = i--; // 后自减   sum = i ; i = i-1;
        System.out.println("sum = "+ sum);  // 0  1
        */

        int num = 10;
        //int sum = 10* num++; //后自增
        int sum = 10* ++num; //前自增
        System.out.println("sum = "+ sum);

    }
}
/*
赋值运算符:
    =  (赋值运算符)
    +=
    -=
    *=
    /=
    %=
*/
class Demo6
{
    public static void main(String[] args)
    {

        int i = 10; // 把10赋予给i变量。
        i+=2;  // i = i+2;
        System.out.println("i = "+i);

        byte b1 = 1;
        byte b2 = 2;
        //b2 = (byte)(b2+b1); //报错。, 需要强制类型转换
        b2+=b1;  //b2 = b2+ b1;     b2+=b1 在编译的时候,java编译器会进行强制类型转换,不需要我们手动转换了。
        System.out.println("b2 : "+ b2);
    }
}
/*
比较运算符: 比较运算符的结果都是返回一个布尔值的。

    == (判断是否等于)
    ==用于比较两个基本数据类型数据的时候,比较的是两个变量所存储的值是否一致.
    ==用于比较两个引用类型变量的数据时候,比较的是两个引用类型变量所记录的内存地址是否一致. 

    != (不等于)
    > (大于)
    < (小于)
    >= (大于等于)
    <= (小于等于)
*/
class Demo7
{
    public static void main(String[] args)
    {
        /*
        int a = 10;
        int b =10;
        System.out.println("10等于10吗?"+ (a==b));
        System.out.println("10不等于1吗?"+ (10!=1) ); //true
        */

        byte b  = 10;
        long l = 30;
        System.out.println(l>b); //两个不同类型的数据是否可以比较呢.,可以的,但是两个不同类型的数据必须是兼用的数据。
        //这个比较的过程会先把b转换了long类型的数据,然后再进行比较 。

        System.out.println('a'>50);

    }
}
/*
逻辑运算符 :逻辑运算符的作用是用于连接布尔表达式的。 

    & (与,并且)
规律: 只有左右变量同时 为true,那么结果才是true,否则就为false。

    |  (或,或者)

规律: 只要两边的布尔表达式有一边为true,那么结果就为true,只有两边同时为false 的时候,结果才是false.

    ^  (异或)

规律: 只要两边的布尔表达式 结果不一致,那么结果就为true,如果左右两边 的布尔表达式一致,那么就为false.

    ! (非)

--------------------
    && (短路与\双与)

短路与和单与符号的相同与不同点:

    相同点: 短路与和单与运算 的结果是一样的。

    不同点: 使用短路与的时候,如果左边的布尔表达式为false,则不会在运算右边的布尔表达式,从而提高了
    效率。使用单与的时候,即使发现左边的布尔表达式为false,还是会运算右边的布尔表达式的。

只有左边的布尔表达式为false时,双与的效率才要高于单与的.

    || (短路或\双或)

短路或与单或的相同点与不同点:

    相同点:运算的结果是一致的。

    不同点:使用短路或的时候,当发现左边的布尔表达式为true时,则不会运算右边的布尔表达式。
    使用单或的时候 发现左边的布尔表达式为true,还是会运算右边布尔表达式。

需求:要求两年或两年以上的工作经验,年龄大于18岁。

*/
class Demo8
{
    public static void main(String[] args)
    {
        /*
        int workAge = 2;
        int age = 24;
        System.out.println(workAge>=2|age++>18);
        System.out.println("age:"+ age);

        System.out.println(true&true);  //true
        System.out.println(true&false); // false
        System.out.println(false&true); // false
        System.out.println(false&false); // false

        System.out.println(true|true);  // true
        System.out.println(true|false); // true
        System.out.println(false|true); // true
        System.out.println(false|false); // false

        System.out.println(true^true);  //  false
        System.out.println(true^false); //  true
        System.out.println(false^true); //  true
        System.out.println(false^false); //  false

        System.out.println(!true); // 

        System.out.println(true&&true);  //true
        System.out.println(true&&false); // false
        System.out.println(false&&true); // false
        System.out.println(false&&false); // false

    */

        System.out.println(true||true);  // true
        System.out.println(true||false); // true
        System.out.println(false||true); // true
        System.out.println(false||false); // false
    }
}
/*
位运算符:位运算符就是直接操作二进制位的。
    & (与)
    | (或)
    ^ (异或)
规律: 如果操作数A连续异或同一个操作数两次,那么结果还是操作数A。

应用: 对数据加密.

    ~  (取反)

*/

class Demo9{

    public static void main(String[] args){
        System.out.println(6&3); // 2
        System.out.println(6|3);
        System.out.println(6^3); 

        System.out.println(~7);  // -8
    }
}
/*
位运算符可能会出现的笔试题目:
    1. 交换两个变量的值,不准出现第三方变量。

    2. 取出一个二进制数据的指定位数。要求读取该二进制数据的低4位
            00000000-00000000-00010100-01001101
        &   00000000-00000000-00000000-00001111
        ------------------------------------------
            00000000-00000000-00000000-00001101
*/
class Demo10 {

    public static void main(String[] args)
    {
        int a = 3;
        int b = 5;

        /*
        第一种方式: 定义第三方变量。
        int temp = a;  //3
        a = b; //a = 5
        b = temp; 

        方式2:相加法, 缺点: 两个int类型的数据相加,有可能会出现超出int的表示范围。

        a = a+b;  // a =8
        b = a-b; //b = 8 - 5 = 3
        a = a-b; // a = 8 - 3 = 5

        方式3: 可以使用异或。 缺点: 逻辑不清晰。
        */
        a = a^b;  // a = 3^5
        b = a^b;  // b = (3^5)^5 = 3
        a = a^b; //  a = (5^3)^3 = 5
        System.out.println("a = "+ a+" b="+b);
    }
}
/*
移位运算符:
    <<(左移)
规律:一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移的位数.
    3<<1 = 3 *2(1) = 6;
    3<<2 = 3*2(2) = 12
    3<<3 = 3*2(3) = 24

    >>(右移)

规律:一个操作数在做右移运算的时候,实际上就是等于该操作数除以2的n次方,n就是右移的位数。

    3>>1 = 3 / 2(1) = 1
    3>>2 = 3 / 2(2) = 0 。。

    >>>(无符号右移) :

无符号右移与右移的区别:进行右移运算的时候,如果操作数是一个正数,那么左边的空缺位使用0补,
如果操作数是一个负数,那么左边的空缺位使用1补。而使用无符号右移的时候,不管是正数还是负数都
统一使用0补。

笔试题目:使用最高的效率算出2乘以8的结果。
        2<<3 = 2*2(3) = 16;
*/
class Demo11 {

    public static void main(String[] args){
        /*
        左移
        System.out.println(3<<1); // 6
        System.out.println(3<<2); // 12
        System.out.println(3<<3); // 24 

        右移:
        */
        System.out.println(3>>>1); // 1
        System.out.println(3>>>2);  //0 

    }
}
/*
三元运算符(三目运算符)

格式;
    布尔表达式?值1:值2  ;

三元运算符要注意的细节:
    使用三元运算符的时候,一定要使用该表达式返回的结果,或者是定义一个变量接收该表达式返回的结果。

*/
class Demo12
{
    public static void main(String[] args) {
        /*
        int age = 26;
        String result = age>=18?"成年人":"未成年人";
        System.out.println(result);
        */

        int a = 1;
        int b = 2;
        int c = 3;

        int result = a*b+c/2+2*(a+b)/c;
        System.out.println("result="+result);
/*

a*b+c/2+2*(a+b)/c;

a*b+c/2+2*3/c

2+c/2+2*3/c

2+1+2*3/c
2+1+2  = 5
*/

    }
}

流程控制语句

/*

控制流程语句:

语句: 使用分号分隔的代码就是一个语句。

顺序语句: 按照代码顺序从上往下执行所有的代码就是顺序语句,,

*/
class Demo1 {

    public static void main(String[] args)
    {
        /*
        int i = 10;  //声明变量的语句
        ;//空语句
        System.out.println("Hello World!"); //输出语句
        */
        System.out.println("A");
        System.out.println("B");
        System.out.println("C");
        System.out.println("D");
    }
}
/*
控制流程语句之(if)判断语句

if判断语句的格式:

格式1:适用于一种情况使用。

    if(判断的条件){
        符合条件执行的代码;
    }

格式2 : 适用于两种情况下去使用的。

    if(判断条件){
        符合条件执行的代码
    }else{
        不符合条件执行的代码;
    }

三元运算符的格式:布尔表达式?值1:值2;

if-else 与三元运算符非常像:

    三元运算符的优点: 结构比较简洁。

    三元运算符的缺点: 符合条件必须要返回一个结果,不能执行语句。

格式三: 适用于多种情况下去使用的。

    if(判断条件1){
        符合条件1执行的代码
    }else if(判断条件2){
        符合条件2执行的代码
    }else if(判断条件3){
        符合条件3执行的代码
    }......else{
        都不符合上述 的条件执行的代码
    }

if语句要注意的细节:
    1. 如果符合条件后只有一个语句需要执行,那么可以省略大括号。但是建议不要省略,因为结构不清晰。
    2. if语句的判断条件后不能添加分号,否则会影响到执行的效果的,

需求1:工作经验要两年或者两年以上。

需求2:根据一个变量所记录的数字输出对应的星期。 0 ---星期天  1 星期一

*/
class Demo2
{
    public static void main(String[] args)
    {    

        int workAge = 2;

    /*
    格式1:
        if(workAge>=2){
            System.out.println("电话通知过来面试..");
        }

    格式2:

        if(workAge>=2){
            //符合条件执行的代码
            System.out.println("电话通知你面试");
        }else{
            //如果不符合上述的条件执行的代码
            System.out.println("电话通知不要再投简历了,不收你!!");
        }
    */

        int num = 31;

        if(num==0){
            System.out.println("星期天");
        }else if(num==1){
            System.out.println("星期一");
        }else if(num==2){
            System.out.println("星期二");
        }else if(num==3){
            System.out.println("星期三");
        }else if(num==4){
            System.out.println("星期四");
        }else if(num==5){
            System.out.println("星期五");
        }else if(num==6){
            System.out.println("星期六");
        }else{
            System.out.println("没有对应的星期");
        }

    }
}
/*
需求: 键盘录入一个分数,根据分数输出对应的等级。

比如: 100-90  A等级    89-80  B等级 ..... E等级

接受键盘录入数据的步骤:
    1. 创建一个扫描器对象。
    2. 调用扫描器对象的nextInt方法扫描数据。
    3. 导入包。
*/
import java.util.*;
class Demo3
{
    public static void main(String[] args)
    {

        //创建一个扫描器
        Scanner scanner = new Scanner(System.in);
        //调用扫描器扫描键盘录入的数据

        System.out.println("请输入一个分数:");
        int score = scanner.nextInt(); //定义了一个num变量接收扫描到内容。

        if(score>=90&&score<=100){
            System.out.println("A等级");
        }else if(score>=80&&score<=89){

            System.out.println("B等级");
        }else if(score>=70&&score<=79){

            System.out.println("C等级");
        }else if(score>=60&&score<=69){

            System.out.println("D等级");
        }else if(score>=0&&score<=59){

            System.out.println("E等级");
        }else{
            System.out.println("补考..");
        }

    }
}

Java基础学习(三)的更多相关文章

  1. Java基础学习(三)—面向对象(上)

    一.理解面向对象       面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是 ...

  2. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  3. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  4. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  5. java基础学习总结——java环境变量配置(转)

    只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...

  6. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  7. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  8. Java基础学习(3)

    Java基础学习(三) Java异常 Throwable类:所有异常的祖先类 Error:虚拟机异常.内存错误.没法处理 Exception:编码.环境.用户操作输入出现问题 非检查异常(自动捕获): ...

  9. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  10. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

随机推荐

  1. 如何使用git命令添加文件和提交文件

    1.进入指定文件夹内,启动 git bash here 2. 初始化文件夹 git init 3.开始添加文件 所有文件添加方法 git add . 单个文件添加方法 git add *.* 例如我的 ...

  2. nginx配置杂记

    1.一个接口的形式要求是:IP+端口,并且通信协议类型是:https,如何做域名解析: ①设置一个端口.同时在防火墙中打开这个端口,重启防火墙: ②在服务器上/etc/nginx/conf.d的目录下 ...

  3. Oracle函数组的使用

    --1.组函数--COUNT():用来统计记录的条数 如果没有记录,返回 0--COUNT函数可以根据一列或多列进行计算,没有排重功能--统计EMP表一共有多少条记录select count(empn ...

  4. 我们为什么要看《超实用的Node.JS代码段》

    不知道自己Node.JS水平如何?看这张图 如果一半以上的你都不会,必须看这本书,一线工程师用代码和功能页面来告诉你每一个技巧点. 都会一点,但不知道如何检验自己,看看本书提供的面试题: 1.     ...

  5. acm的ubuntu (ubuntu16.04 安装指南,chrome安装,vim配置,git设置和github,装QQ)

    日常手贱把ubuntu14.04更新到了16.04,然后就game over了.mdzz,不然泥萌也看不到这篇博客了=.= 然后花了些时间重装了一个16.04版的,原来那个14.04的用可以用,就是动 ...

  6. Servlet和CGI的区别

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销 ...

  7. ResultSet can not re-read row data for column 1.

    error:ResultSet can not re-read row data for column 1. 将数据类型改为varchar(max)后,查询数据错误 改正:将jdbc驱动改为jtds驱 ...

  8. centos7 开放端口

    开启端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 命令含义:   --zone #作用域   --add-port=80/tc ...

  9. pycharm 2016.3 注册码

    Choose Active Code 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYX ...

  10. WPF相关开源项目

    MahApps 排名第一的是MahApps框架. 该框架不错.详细信息请去官网. cefsharp 能让你在应用中嵌入谷歌浏览器页