java学习之旅(day.03)
整数拓展: 进制
二进制:以0b开头
十进制:我们生活中的正常数 int i=10
八进制:以0开头 int i=010
十六进制:以0x开头 0~9 A~F int i=0x10
浮点数拓展:
float f=0.1f;
double d=10./10;
System.out.println(f==d); //判断f是否等于d false
是有限的、离散的、存在舍入误差(相除除不尽的时候会取一个约等于值)、接近但不等于。
所以最好完全避免使用浮点数比较
字符拓展
char c1='a';
char c2='中';
System.out.println((int)c2);
//所有字符本质还是数字,可强制转换
//转义字符:
\t 制表符 System.out.println(hello\tworld); hello world
\n 换行 System.out.println(hello\nworld); hello world
布尔值拓展
blllean flag=true;
if (flag==true){} //新手
if(flag){} //老手 这两行代码是完全相同的
补充:进制转换
十进制转换为二进制:求商取余法:即十进制数除以2,取余数,直到商为0时,余数由下往上写即为对应的二进制数
二进制转换为十进制:二进制数按圈展开即为十进制数
如110=1* 2E2+ 1* 2E1+ 0*2E0
八进制数转二进制数
八进制数先除以2取余数法,得到二进制数,对每个八进制为三个二进制,不足时左边补0
二进制转八进制:返过去
其他进制转换原理类似 进制转换
类型转换
低=================================高
byte ,short, char —int—long—float—double
小数的优先级大于整数
运算中,不同类型的数据先转化为同一类型,然后进行运算
强制类型转换(由高到低) (类型)变量名
int i=128;
byte b=(byte)i ; //要考虑内存溢出
自动类型转换(由低到高) double b1=i;
注意事项:
不能对布尔值进行转换
不能把对象类型转换为不相干的转换
在把高容量转换为低容量的时候,采用强制转转;反之,直接转换。
转换的时候要考虑到内存溢出或精度问题(如浮点数转到整数:2.36—2,会自动取整(int)23.7=23)。
//操作比较大的数的时候,要考虑溢出
//JDK7新特性:数字之间可以用下划线进行分割,不影响数字
int money =10_0000_0000;
int years =20;
int total =money*years;
System.out.println(total); //-1474836480 计算时溢出
//若改为long接收:
long total1 =money*years;
System.out.println(total1); //-1474836480 依旧溢出,计算时默认money和years是整型,计算完成时再转long,(计算结果是整型,在转long时已经溢出了)
//可以改为:
long total2=money*((long)years);
变量
变量:可以变化的量
java是一种强类型语言,每个变量都必须声明其类型
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varname [=value];
//数据类型 变量名 =值;
type varname [=value];
//数据类型 变量名 =值;
可以使用逗号隔开来声明多个类型变量,但不建议这样用。
如:
int a=1,b=2,c=3;//一般不这样写
int a=1;
int b=2;
int c=3; //而应写成这样
注意:
- 每个变量都有类型,可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
类变量:写在类里面的
实例变量:写在方法外,类之内
局部变量:写在方法里面的
public class Variable{
static int allclicks=0; //类变量,有static这个关键词
String str="hello world"; //实例变量,无关键词
publi void method(){
int i=0; //局部变量
}
}
public class demo08 {
//类变量 static
static double salary=2500;
//实例变量:从属于对象(类),可以不初始化就能用,如果不初始化,这个类型默认值:0,0.0
//布尔值:默认是false
//除了基本类型,其余的默认值都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量是在方法内,用之前必须声明和初始化值
//局部变量只在所在的这个括号内有用,括号外无用
int i=10;
System.out.println(i);
//变量类型 变量名 变量值
demo08 demo08=new demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
//类变量 加一个关键词static
System.out.println(salary);
}
//其他方法
public void add (){
}
}
常量
常量初始化后不能再改变值,不会变动的值。
所谓常量可以理解为一种特殊的变量,其值被设定后,在程序运行过程中不允许被改变
final 常量名=值
final double PI=3014
常量名一般使用大写字符
public class demo09 {
static final double PI=3.14;
//也可以写为 final static double PI=3.14;
//修饰符不存在先后顺序
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范:
- 所有变量、方法、类名要见名知意
- 类成员变量:首字母小写和驼峰原则:如monthSalary 除了第一个单词以外,后面单词首字母要大写lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线,全部使用大写字母,如果单词过长,加下划线定义。如:MAX_VALUE
- 类名:首字母大写和驼峰原则Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
java学习之旅(day.03)的更多相关文章
- Java学习之旅开篇:运行机制及环境搭建
在写这篇博客之前,我想对自己进行简单概括:我从事软件开发工作已经三年多了,并且一直在从事.NET相关项目的开发.为什么突然间想学习Java呢?有以下几个原因: 1. 开发程序三年多来,已经对.NET相 ...
- Java学习之旅基础知识篇:面向对象之封装、继承及多态
Java是一种面向对象设计的高级语言,支持继承.封装和多态三大基本特征,首先我们从面向对象两大概念:类和对象(也称为实例)谈起.来看看最基本的类定义语法: /*命名规则: *类名(首字母大写,多个单词 ...
- 第一篇,java学习之旅
在java的这座殿堂中,我才刚刚推开了大门,就像是在岔路口找到了一条,走向前进java大门的路. 下面是一些java算法的问题 第一题: package project.model; import j ...
- Java学习之旅(一):探索extends
鄙人为兴趣爱好,0基础入门学习Java,有些心得想法,记录于此,与君分享. 然毕竟新手,学识尚浅,错误之处,希望多多指正批评,也是对我最大的帮助! 前言:本篇文章,主要讨论在子类继承父类之后,一些继承 ...
- Java学习之旅基础知识篇:数组及引用类型内存分配
在上一篇中,我们已经了解了数组,它是一种引用类型,本篇将详细介绍数组的内存分配等知识点.数组用来存储同一种数据类型的数据,一旦初始化完成,即所占的空间就已固定下来,即使某个元素被清空,但其所在空间仍然 ...
- Java学习之旅基础知识篇:数据类型及流程控制
经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...
- 我的java学习之旅--一些基础
(因为我粗略学过C,C++,Python,了解过他们的一些语法,所以为了使得java的入门更为顺畅,便会忽略一些和C语法相类似的地方,着重点明一些java自己的特色之处.也减轻一下自己写文字的负担.) ...
- Java学习之旅(二):生病的狗1(逻辑推导)
前言:本篇文章属于个人笔记,例化了一些代码,不知是否合理,请指教. 中午看到一位同学的面试题,觉得很烧脑,烧脑不能一个人烧,要大家一起烧. 村子中有50个人,每人有一条狗.在这50条狗中有病狗(这种病 ...
- java学习之旅
jar文件其实就是一个压缩包,里面包含很多class文件(一个class文件是一个类的字节码).方便在网络上传输.可以规定版本号,更容易进行版本控制. var只能在方法内使用,不能用于定义成员变量. ...
- 面向对象编程(OOP)的五大特征-java学习之旅(1)
这是Alan Kay关于第一个成功的面向对象语言SmallTalk的总结: 1.所有的东西都是对象.可将对象想象成一种新型的变量:它保存着数据,但是可要求它对自身进行操作,理论上讲,可从要解决的问题身 ...
随机推荐
- clang的lto特性的资料
clang对lto的支持,如下文章介绍的清晰.易懂. ThinLTO llvm+clang 添加 LTO(Link Time Optimization) 支持 编译优化之 - 链接时优化(LTO)入门 ...
- JDK10的新特性:本地变量类型var
目录 简介 为什么我们需要var var使用在什么地方 var不能用在什么地方 其他var的特点 总结 简介 java以面向对象的特性显著于世并得到了蓬勃的发展.在语言的发展过程中,为了让java语言 ...
- 精彩预告 | OpenHarmony即将亮相MTSC 2023
MTSC 2023 第 12 届中国互联网测试开发大会(深圳站)即将于 2023 年 11 月 25 日,在深圳登喜路国际大酒店举办,大会将以"1 个主会场+4 个平行分会场"的形 ...
- 【直播回顾】OpenHarmony知识赋能五期第三课——多媒体整体介绍
5月5日晚上19点,知识赋能第五期第三节课<OpenHarmony标准系统多媒体子系统整体介绍>,在OpenHarmony开发者成长计划社群内成功举行. 本期课程,由深开鸿资深技术专家郭岳 ...
- 提升面试成功率:深入理解 C++ 11 新特性
C++11是C++语言的一个重大更新,引入了许多新特性,包括自动类型推导.lambda表达式.右值引用.智能指针等等.这些新特性使得C++更加现代化.高效.易用.也是面试容很容易被问到一个问题,下面我 ...
- 演示webuploader和cropperjs图片裁剪上传
最近有个项目要在浏览器端裁剪并上传图片.由于缺乏人力,只能我上阵杀敌.通过参考各种文章,最后决定用cropperjs进行图片裁剪,用webuploader上传文件.本文涉及到的知识至少有Java基础. ...
- web开发可不可以是这样的?
service不外乎就是数据校验,调用其它service,调用第三方api,读写数据库,既然这样,那我认为Service也可以做成可配置化的样子,配置项大致有 所需参数配置:参数列表,参数类型,参数长 ...
- 如何快速实现Prometheus监控Kubernetes集群
Prometheus K8S集群中常见的监控工具有哪些: Kubernetes Dashboard Kube-monkey K8s-testsuite Kubespray Minikube Prome ...
- 编译 OpenCV 的 Python 依赖
这一次编译 OpenCV 的 Python 依赖为了方便运行我们使用 Docker 进行编译,环境准备如下: 系统依赖:Ubuntu 18.04 Python 版本:3.6,Ubuntu 18.04 ...
- 4款值得推荐的AI辅助编程工具(支持C#语言)
前言 在这个AI迅速发展的阶段,涌现出了一大批好用的AI辅助编程工具.AI辅助编程工具能够提高开发效率.改善代码质量.降低bug率,是现代软件开发过程中的重要助手.今天大姚给大家分享4款AI辅助编程工 ...