首页 > 编程语言 >Java学习2

Java学习2

时间:2023-07-29 17:45:46浏览次数:38  
标签:运算 Java 变量 int System 学习 println out

java学习2

继续学习了一些基础的语法内容知识

数据类型扩展

  1. 整数进制标识
int a = 010;	//8  八进制 0开头
int b = 0x10;	//16 十六进制 0x开头
int c = 10;		//10 十进制 0-9 A-F
  1. 浮点数进制标识
float A = 1.0;
float B = 1.0;	
  • 如果进行比较 A与B 大小是不同的,因为float类型表征的是有限离散型数值,它与实际数值会有误差,可以理解为接近但不等于
  • 如果面向银行等需要精确数值运算的业务,需要使用 BigDecimal 类型
  • 最好完全避免使用浮点数进行比较
  1. 强制转换
        char o = 'a';
        char p = '中';
        System.out.println(o);
        System.out.println(p);
        System.out.println((int)o); //强制转换
        System.out.println((int)p); //强制转换
        System.out.println('\u0061');//unicode编码 转义字符
		
		boolean flag = true; 
		if(flag == true){  //1
            
        }
		if(flag){   //2  1与2是等价的 即flag==true 与 单个flag是等价的
            
        }
  1. 转义字符
img
  1. 后续思考(对象内存?)
        System.out.println(dd);
        String s1 = new String("Hello, world!");
        String s2 = new String("Hello, world!");

        String s3 = "Hello, world";
        String s4 = "Hello, world";
        System.out.println(s1 == s2);
        System.out.println(s3 == s4);
        //对象和内存

类型转换

image-20230729115957014

注:运算中,不同类型的数据先转换为同一类型,然后进行运算

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 在高容量转换为低容量的时候强制转换(高->低,强制转换; 低->高,自动转换)
  4. 转换的时候可能存在内存溢出或精度问题

扩展:

  • 数字可以用下换线分割
int a = 10_0000_0000;
int b = 1000000000; //a与b等价 JDK7之后
  • 溢出问题及解决
int year = 20;
int out = year * a; //int溢出
System.out.println(out);
long out1 = year * a; //默认是int进行运算,算完后才转换为long,所以有溢出
System.out.println(out1);
long out2 = (long)a * (long)year; //强制转换无溢出
System.out.println(out2);
//结果
//-1474836480 溢出
//-1474836480 溢出
//20000000000 成功  

书写规范:long类型后面需要加L(l),为方便与1区分,一般都用大写的L

变量

变量定义

  1. java是一种强类型语言,每个变量都必须声明其类型
  2. java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
  3. 理解:变量指代的是一块内存空间,空间需要指定存储类型,并对变量名进行定义便于区分,其中存储着变量的值
type varName [=value] [,varName[=value]];
// 数据类型 变量名 = 值;可以用逗号隔开来声明多个同类型的变量,但是不建议(可读性差),一行最好定义一个变量
  • 每个变量都有类型,可以是基本类型,也可以是引用类型

作用域

  • 类变量
  • 实例变量
  • 局部变量

image-20230729121736717

  • 下面给出具体程序举例说明
public class demo02 {   //类

    static  double salary = 200; //类变量,从属于类,与类一起出来一起消失
    int year; //实例变量
    double money;
    boolean flag;
    String name;
    public static void main(String[] args){ //方法
        int a = 1;  //局部变量
        System.out.println(a);
        //实例变量调用 变量类型 变量名字 = new demo02
        demo02 d2 = new demo02();
        System.out.println(d2.year);
        System.out.println(d2.money);
        System.out.println(d2.flag);
        System.out.println(d2.name);
        //实例变量结果
        //0     int默认值
        //0.0   double默认值
        //false 布尔 默认值
        //null  字符串默认值
        //除了八大基本类型,其余默认值都为 null

       // 如果直接调用实例变量会出错
        //System.out.println(flag);

        //类变量
        System.out.println(salary);
    }


    public void add(){  //另一种方法
       // System.out.println(a); // 出错!局部方法局限于方法内,不能在另一个方法内输出
    }
}

常量

注:初始化之后不能再改变值!值不再变动;特殊的变量,被设定之后,程序运行过程中不允许改变

定义:final 常量名 = 值

例: final double Pi = 3.1415926;

拓展

  • 修饰符不存在先后顺序,如static final 与 final static效果是一样的
  • 各类的变量方法和类名命名规范
    1. 所有变量、方法、类名都需要做到,见名知意
    2. 类成员变量:首字母小写和驼峰原则,monthSalary
    3. 局部变量:首字母小写和驼峰原则
    4. 常量:大写字母和下划线 MAX_SPEED
    5. 类名:首字母大写和驼峰原则,GoodMan
    6. 方法名:首字母小写和驼峰原则

运算符

总览

  • ctrl + D 复制当前行到下一行(IDEA快捷键)

  • 整数运算时,如果式子里有long,则结果为long类型;如果没有(int byte short)不论元素为哪种类型,结果都为int型

  • 关系运算符返回布尔值

自增自减

  • 自增的位置区别
int a = 5;
int b,c ;
b = a++;   //执行完这行语句,先将a=5赋给b,之后再进行a自增即a=a+1
c = ++a;	//执行语句前,先将a自增,再将自增后的1赋给c
//结果
//b = 5,c = 7

短路运算

  • 短路运算,如果已经判断出结果则不会执行后边的运算
//短路运算!!
int c = 5;
boolean d;
d = (c>5) && (c++ <10);
System.out.println(c);
System.out.println(d);
//结果
// 5 (短路运算,如果已经判断出结果则不会执行后边的运算)
//false

位运算

& | ~

举例:

a = 0011 0100;

b = 0101 1010;

a & b = 0001 0000; //逐位进行与运算

a | b = 0111 1110;//逐位进行或运算

~b = 1010 0101; //逐位取反

<< >>

<<向左移位,反之向右移位

举例:计算2x8

  • 对于计算机而言,就此题而言,运算效率最高的方式是移位进行操作,因为是直接的底层运算

即2x8 = 2x2x2x2;

System.out.println(2<<3);
/* 移位运算
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/

三元运算符

举例: a ? b : c

意思:a是否为true?如果为true则输出b,如果为false则输出c

运算符优先级

img

拓展

  • 幂运算:Math.pow(a,b) 即表示 a^b

  • 字符串连接符

    如果在输出时,“+”运算符左右两侧有一侧为字符串,则自动将结果转换为字符串,顺序有说法。如下例:

    int a = 10;
    int b = 20;
    System.out.println(a+b);
    System.out.println(""+a+b);  //字符串拼接   
    System.out.println(a+b+"");  //结果为30,但类型为字符串
    //结果
    //30
    //1020
    //30
    

包机制

  • 目的:类似文件夹,防止命名空间重复。具体来说,为了更好组织类,java提供了包机制,用于区别类名的命名空间

  • 包语句的的语法格式

    package pkg1[.pkg2[.pkg3..]]
    
  • 一般利用公司域名倒置作为包含。例如www.baidu.com,我们在创建包时候为com.baidu.www

  • 为了使用某一个包的成员,我们可以在java中明确导入包。可用 import 语句

    import package1[.package2...].(classname|*); // * 意思就是调用该包下所有的包成员
    
  • 代码书写规范:阿里巴巴开发手册

标签:运算,Java,变量,int,System,学习,println,out
From: https://www.cnblogs.com/learnspf/p/17590184.html

相关文章

  • Java学习-2.简介、关键字、标识符、变量、数据类型、运算符
    一、Java简介Java最早是由SUN公司(已被Oracle收购)的詹姆斯·高斯林(高司令,人称Java之父)在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,目标是针对小型家电设备的嵌入式应用,结果市场没啥反响。谁料到互联网的崛起,让Oak重新焕发了生机,于是SUN公司改造了Oak,在1995年以Java的名......
  • DP 套 DP 学习笔记
    【例题1】单调栈自动机引自https://www.luogu.com.cn/blog/EternalAlexander/pu-ji-zu-zhuan-ti-sui-bi-1dp-of-dp。对于一个数,你可以进行任意次操作,每次操作可以删去数字相同的连续一段,例如你可以把\(1122331\)变成\(22331\),\(11331\),\(11221\)或者\(112233\)。当然,如......
  • Java面试题 P14:java面试简历如何写
    1、简历整体结构一份完整的简历应该包括如下几个部分:1、基本信息2、教育背景3、求职意向4、工作经历5、执业技能6、项目经历7、个人优势8、个人荣誉2、执业技能:   3、项目经历: ......
  • JavaWeb之Servlet入门版教务系统(一)
    本次要分享的内容是使用Servlet技术实现最简单的从页面到后台的一个简化版的教务系统功能模块。在讲述系统之前,首先需要了解一下JavaWeb中的MVC分层重要思想,请看下图:MVC分层思想把软件系统分为View(视图层),Controller(控制层),Model(模型层),通过这三层结构。让页面请求必须通过控制......
  • JDK17和ZGC学习
    ZGCSTW会延长服务的RT。CMS有碎片化问题。G1只能在STW的时候移动对象。他俩STW时间随着活跃对象的增加而增加。内存几十GB有可能有几十几百秒的STW。甚至FullGC情况。JDK11引用了ZGC。 ZGC是一款几乎没有STW且支持大堆的GC。STW时间不超过10msSTW时间不随活跃对象的......
  • STM32入门学习笔记
     【1-1】、定时器定时中断&定时器外部时钟第一步:RCC开启时钟,是每个代码的第一步第二步:选择时基单元的时钟源,对于定时中断,我们选择内部时钟源第三步:配置时基单元,包括预分频器、自动重装器、计数模式等等,可以用结构体进行配置第四步:配置输出中断控制,允许更新中断输出到NVIC第五......
  • 基于JAVA的佳乐福购物商城
    本系统主要是提供给大一个购买商品的平台和管理商品的佳乐福购物商城,通过价格优势吸引众多消费者来购买,实现正常运营。本文主要是采用JAVA语言、jsp技术、Sqlserver数据库、tomcat服务器作为开发平台,系统采用B/S结构进行开发,完成一个佳乐福购物商城。目标是实现一个以销售为中心的......
  • 基于JAVA的小区智能停车位管理系统
    随着小区自动化和信息化程度的不断提升,停车位管理受到越来越多小区的重视,为了方便小区停车位管理难的问题,小区物业急需一套小区智能停车位管理系统。智能停车位管理系统可以通过对出入小区的车辆进行注册登记、收费管理等活动,进而实现小区信息化建设的提升。面对信息高速发展的机遇......
  • 7月25日Java学习
       ......
  • JAVA基础
    JAVA基础一 了解JAVAPascal之父NicklausWirth:“Algorithms+DataStructures=Programs”译:应用程序=算法+数据结构1.常见的Dos命令dir:列出当前目录下的文件夹md:创建目录rd:删除目录cd:进入指定目录cd..:退回上一级目录cd\:退回到根目录del:删除文件2.Java语言......