Java简单介绍

Java面向对象:一个面向对象的木匠关心的制作的椅子;这个木匠干了什么事情
非面向对象的木匠关心的是所使用的工具。
狗吃粮 面向对象
吃狗粮 非面向对象

Java与c++区别:
1.简单性:没有指针,头文件,结构,联合、操作符重载(operator) 虚基类等。
2.面向对象:都是面向对象,但是java没有多继承,但是接口可以实现多继承,Java提供了运行时自省功能。(什么是与运行时自省功能)
3.健壮性:
4.安全性:防范常见的各种攻击
5.可移植性:基本数据类型的大小以及有关运算都做了明确说明。Java中int永远是4字节(32)位,而在C++中int 可能是2字节或4字节,也可能是编译器指定商指定的其他大小,在Java中,数据类型具有固定的大小,消除了代码移植时存在的问题。
6.多线程
7.动态性:与c++相比功能具有动态性,它能够不断适应发展的环境,库中可以不断添加新方法和实例变量,而对客户端没有影响。

发展史:Java语言起源于1991年Sun公司的Oak项目,1995年正式命名为java
1996年1月 Java1.0发布,提供了可解释执行的Java虚拟机。
1997年2月Java1.1发布,反射,接口,类的关系
1998年12月 Java1.2 使用Just in time编译技术,语言的可迁移性好执行效率最优,Collections集合类设计优良
2006年Java 6 ,Java开源
2009年Oracle收购Sun公司
2014年,Java8 Lambda表达式。函数式编程能力。

Java是一门半编译,半解释型语言。先通过javac编译程序吧源文件进行编译,编译后生成的.class文件是由字节码组成的平台无关,面向JVM的文件,最后启动Java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。

主类和主方法
Test.java–是源文件,源文件必须与主类名(public class )保持一致,一个源文件只能有一个主类 ,主方法存在与主类中。
Test.java 源文件
主类:public class Test
主方法 : public static void main(String[] args)
Java程序编译–执行流程
编译:javac Test.java —>Test.class(二进制文件)(若程序中出现中文,可以加上 -encoding UTF-8)
解释:java Test(主类名称)
命令行向主方法传参 java 主类名称 参数1 参数2 (参数1是args[0],参数2是args[1])
JDK JRE
JDK:java开发工具包,包含JRE,多了编译器javac 以及调试工具 JConsole、jstack,针对java程序员;
JRE: java运行时环境,包含JVM以及Java核心类库,是运行Java程序的环境,针对使用Java程序的客户;
JVM: java虚拟机,(Java移植性的关键)

标识符:数字,字母,_、$,不能以数字开头,不能是关键字。
数据类型

int
在java中,任何一个整型常量都是int类型。
整型溢出:

public class Int
{public  static void main(String[] args){//int 的包装类是Integerint maxValue=Integer.MAX_VALUE+1;//整型最大值+1,会溢出int minValue=Integer.MIN_VALUE-1; //整型最小值-1,会溢出System.out.println(maxValue);System.out.println(minValue);}
}


到达整型最大值或最小值后,需要转换数据类型:

  int maxValue=Integer.MAX_VALUE;int minValue=Integer.MIN_VALUE; long max=maxValue+1;long min=minValue-1;System.out.println(max);System.out.println(min);


结果依然是溢出,是因为执行顺序是从右向左,右边是int类型相加,这时已经溢出,那么max里存的就是溢出值。
解决方法如下:

long maxValue=Integer.MAX_VALUE+1L;  //int 和long相加,int会自动提升成long
long minValue=(long)(Integer.MIN_VALUE-1);  //强转为long


Java中小的数据与大的数据做数值运算,小的数据类型会自动提升为大的数据类型,当把I(int)声明为long(在数字后加L或l,但推荐使用L,如num=11+1l=12,而不是22,推荐写成11+1L,不容易造成混淆)。
在java中,大的数据转换为小的数据,必须强转,但会造成数据丢失。
long num = 2147483648L;
int result = (int) num; //需要强转
int 和byte

       //整型常量在byte范围内byte a=120;  //byte取值范围是 -128-127System.out.println(a);  //120//整型常量不在byte范围内--》需要强转//byte b=130;// 错误(从int转换到byte可能会有损失)byte  b=(byte)130;  //强转为byteSystem.out.println(b); //-126 byte  c=(byte)300;System.out.println(c); // 44  取的是300的低吧8位即44//整型变量--》需要强转int num=12;//byte d=num;  //错误(从int转换到byte可能会有损失)byte d=(byte)num;System.out.println(d); //12

整型常量若在byte类型的保存范围内,可以直接赋给byte变量,不用强转;
整型常量若不在byte类型的保存范围内,必须强转;
整型变量无论值是否在byte范围内,都需要强转;

上述只限于int 和byte。
对于int 和byte取值范围可参考这篇博客:https://blog.csdn.net/sophia__yu/article/details/81143145
默认值
在最上面一张图,有各个类型变量的默认值,但是默认值需要结合类来观察,主方法中变量必须先赋值再使用,在主方法中不存在默认值否则会报错;

public class Int
{public  static void main(String[] args){int value; //错误System.out.println(value);}
}


解决办法如下:

public class Int
{int value;public  static void main(String[] args){Int i1=new Int();  //需要结合类来看System.out.println(i1.value);  //0 }
}

Java初认识--基本数据类型(int 和byte之间赋值)默认值 类型强转相关推荐

  1. C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short

    //从网络中读取C的无符号int,short,byte字节数组,相应转换成java的long,char,short short anUnsignedByte = 0; char anUnsignedS ...

  2. Java kafka producer 的常用参数的意义说明及默认值

    生产端核心参数 1. acks 参数说明:这是一个非常重要的参数,表示指定分区中成功写入消息的副本数量,这是Kafka生产端消息的持久性(durability)保证.只有当leader确认已成功写入消 ...

  3. *java* 在Java中给Int类型的最大值+1 ,以及int与byte之前强转的例子

    1.给int最大值+1 public class Test1{public static void main(String[] args){//保存当前int的最大值,同理也有long maxValu ...

  4. java final char_java基本数据类型总结 类型转换 final关键字的用法

    java基本数据类型总结 Java数据类型总结 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的. ...

  5. Java默认值规则——各种数据类型的初试值是什么?

    默认值规则指的就是不给变量赋值时,它自己初始化为默认值,不同数据类型默认值不同具体如下表所示: 数据类型 默认值 boolean false char " "(空格) byte 0 ...

  6. 关于Java八种原始数据类型

    关于Java八种原始数据类型 Java八种原始数据类型 int类型 八进制 十六进制 浮点数类型 布尔类型 字符类型 Java八种原始数据类型 Java中的原始数据类型一共有八种,分别为byte(8b ...

  7. 教妹学Java(九):一文搞懂Java中的基本数据类型

    大家好,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.本篇文章通过我和三妹对话的形式来谈一谈"Java 中的数据类型". 教妹学 Java,没见过这么有趣的标题吧? ...

  8. Java基本数据类型默认值和取值范围详解

    Java基本数据类型有哪些?Java中的基本数据类型有,byte.short.int.long.float.double.char和.boolean这些,接下我们来了解一下它们的默认值和取值范围是怎样 ...

  9. JAVA八种基本数据类型+三种引用数据类型

    一.Java八种基本数据类型 在程序设计中经常用到一系列类型,把它们存储在堆栈中,加快程序的运行效率,它们就是基本数据类型.Java提供了8中基本数据类型,分别是:boolean.char.byte. ...

最新文章

  1. linux的QQ浏览器里微信,移动端微信内置浏览器(或QQ浏览器)无法识别onclick事件的问题解决...
  2. python日志输出到屏幕,python日志写入文件
  3. R语言导入SPSS文件实战
  4. golang mysql 基本操作
  5. JVM 调优实战--一个案例理解常用工具(命令)
  6. 彻底掌握动态规划,第一节
  7. linux怎么修改bash,Linux操作系统中如何对Bash变量内容修改?
  8. HTTPS反向代理嗅探
  9. oraclemt 无法启动服务_调整MT后台 解决站点压力问题
  10. Dr.Cleaner pro for mac(系统清理和优化软件)
  11. 从 0 到 1000+ 台服务器监控的构建之路
  12. watir_WatirMaker简介-录制基于Ruby的Watir
  13. 2019/12/9 K60单片机学习
  14. mysql文件上传漏洞_文件上传漏洞
  15. c++链表——银行账户管理系统
  16. 我的世界服务器无限重启怎么办,iPhoneX无限重启怎么办?iPhoneX无限重启解决一览...
  17. wrcoef2函数_二维离散小波变换函数使用总结
  18. ubuntu 登录界面卡死解决方法
  19. 聚类标准误(cluster standard errors)是什么,什么情况下需要聚类,控制了固定效应(fixed effect)还需要聚类吗?
  20. 解决iframe框架onload方法不加载的问题

热门文章

  1. FPGA编程中打拍的目的
  2. 20X36 FCPX插件卡通人物角色场景解说转场图标MG动画元素包 Brightly V3
  3. 用python简单输出年份的天干地支
  4. java正则表达式简单总结以及个别案例(手机号码,邮箱,座机号码)
  5. ORACLE优化器RBO与CBO介绍总结
  6. CCIE与HCIE哪个含金量高些?
  7. 2023新年倒计时(付源码)
  8. css设置笼罩层透明(兼容所有浏览器)
  9. [Vcpkg] 通过vcpkg安装vtk[qt]教程
  10. 2019-11-2-记一次调试资源管理器未响应经验