Java基础 之一 基本知识
Java基础 之一 基本知识
1.数据类型
Java有8种基本数据类型 int、short 、long、byte、float、double、char、boolean
先说明以下单位之间的关系
1位 = 1bit 1字节=8位=8bit 1字=2字节=16位=16bit
1) 整形 表示没有小数部分 包括4种数据类型
int 4字节
short 2字节
long 8字节
byte 1字节
长整型数值后有一个L或l,如400L;
十六进制数值有一个前缀0x或者0X,如0xCAFE
二进制加上前缀 0b或0B,如0b1001是9
2) 浮点类型
- float 4字节
- double 8字节
double的精度是是float的两倍
float类型的数值有一个后缀F或者f,如3.14F 没有f的浮点数默认为double类型
也可以在浮点数后加后缀D或者d
溢出或者出错情况如下
- 正无穷大 如正数/0
- 负无穷大
- NaN(not a number) 如0/0 -2的平方根
3) char类型
char类型的字面量要用单引号括起来。
如:'A'是编码值为65所对应的字符常量。它与"A"不同,"A"是包含一个字符A的字符串。
char类型的值还可以表示为十六进制,范围从\u0000-\Uffff;如\u03c0表示希腊字母Π
4) boolean 类型 false 和 true
2.变量
1) 变量
变量名必须由字母开头并由"字母"或者"数字"构成的序列。
Java的"字母"或者"数字"包括'A'-'Z'、'a'-'z'、'_'、'$' 或者在某种语言中表示字母的任何Unicode字符
2) 常量
用关键字final修饰 如 final double CM_PER_INCH = 2.54
final修饰的变量只能被赋值一次,一但赋值就不能再改,习惯上常量名用大写。
3) 运算符、运算符、字符串
+-*/ 表示 加减乘除 若参与/的操作数都是整数则表示整数除法,否则表示浮点除法
% 取余操作
需要注意正数呗0除会产生异常,浮点数被0除会得到无穷大或者NaN的结果
数学函数求平方根 Math.sqrt(x); 求幂运算Math.pow(x,a) 是x的a次方;
+= -= ++ --
==:
a.数值类型 比值
b.引用类型 比地址
equals:比值
!= && ||
x<y?x:y
位运算符
& and | or ^ 异或 ~ not
4) 数值类型之间的转换

两个数进行运算,低精度的自动转换为高精度
如果高精度的转换为低精度的会丢失一些信息,需要强制类型转换。
double x = 3.05;
int a = (int)x;
5) 枚举类型
enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE}
6) 字符串
Java类库中提供的一个预定义类 String 用双引号括起来
String str = "abcdefg"
1.字串
Sting s = str.substring(0,3); //就是abc 第二个参数是不想被复制的第一个位置
2.拼接
a.直接用+ a+b
b.多个字符串放在一起,用一个定界符分隔,可以用静态join
String.join("-",Stringarray);
或者String.join("-","S","M","L","XL");
3.Java的String类型是不可变的,最多将引用指向另一个字符串
4.equals检测两个字符串是否相等
"a".equals(str)
5.空串""是长度为0的字符串
6.String变量还可以存放null
7. str1.compareTo( str2 );
返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。
如果参数字符串等于此字符串,则返回值 0;
如果此字符串小于字符串参数,则返回一个小于 0 的值;
如果此字符串大于字符串参数,则返回一个大于 0 的值
7)构建字符串
StringBuilder builder = new StringBuilder();
每次添加一部分内容
builder.append(ch);
builder.append(str);
在需要构建字符串的时候,调用toString
String myString = builder.toString()
3. 输入输出
1) 输入
Scanner in = new Scanner(System.in)
String name = in.nextLine(); //读取一行
in.next() //读取一个单词 以空白符作为分隔符
in.nextInt(); //读取一个整数
in.nextDouble(); //读取一个浮点数
2) 输出
System.out.println() 输出信息后追加一个换行
System.out.print() 输出之后不追加换行
System.out.printf() 格式化输出
如System.out.printf("%8.2f",x) 浮点数
%s 字符串
%d 十进制数
3) 文件的输入输出
//如果文件名包含反斜杠,加一个额外的反斜杠 "c:\\mydirectory\\myfile.txt"
Scanner in = new Scanner(Path.get("myfile.txt"),"UTF-8")
//如果文件不存在,创建改文件
PrintWriter out = new PrinterWriter("myfile.txt","UTF-8")
4.控制流程
1) 块作用域
public static main(String[] args){
int n;
...
//块由一对大括号括起来
{
int k;
int n; //不能在嵌套的块中(函数可以看作一种块)定义同名变量
}
}
2) 条件语句
if(){
...
}else if(){
...
}else{
...
}
3) 循环语句&switch
whiel(){
}
---------------
do{
}while()
---------------
for(int i;i<length;i++){
}
---------------
//list是数组或者集合
for(Object obj:list){
}
---------------
//多重选择
switch(choice){
case "a":
...
break;
case "b":
...
break;
case "c":
...
break;
case "d":
...
break;
case "e":
...
break;
default:
...
break;
}
- 循环中断
while(a<=100){
...
if(...) break;
}
带标签的break
flag: //标签,必须放在希望跳出的最外层循环之前,并且紧跟一个冒号
while(a<=100){
...
while(){
if(...)
break flag; //如果为false,跳转到带标签的语句块末尾,跳出所有循环之外
}
}
5.大数值
//java.math包中的两个很有用的类:BigInteger和BigDecimal
//使用valueOf方法可以将普通数值转换为大数值
BigInteger a = BigInteger.valueOf(100);
//不能使用+ - * /处理大数值
BigInteger c = a.add(b);
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); //d = c*(b+2)
subtract() //大数值差
divide() //大数值商
6.数组
1) 定义一个数组
int[] a = new int[100];
int[] a = new int[]{1,2,3}; //元素个数和大括号不能同时写
//或者
int a[] = new int[100];
//创建一个数字数组,所有元素初始化为0,boolean数组的元素会初始化为false
String[] str = new String[10]; //所有字符串初始化为null
array.length代表数组长度
2) for each
int[] a;
for(int element:a){
...
}
3) 数组初始化 匿名数组
//初始化数组
int[] a = {2,4,6,8,13,16};
//匿名数组
new int[]{20,24,36,48,63,76};
//重新初始化a
a = new int[]{20,24,36,48,63,76};
//相当于下面的简写
int[] anonymous = {20,24,36,48,63,76};
a = anonymous;
//注意,Java允许数组长度为0
new int[0];
4) 数组拷贝
int[] a = {1,3,5,7,9};
int[] b = a; //此时a,b 指向同一数组
b[0] = 99; //此时a[0],b[0]都变成99
//如果下把a的值拷贝到新的数组中
int[] b = Arrays.copyOf(a,a.length);
5) 数组排序等
int[] a = new int[1000];
Array.sort(a); //排序
a.toString(); //返回a中元素的字符串
6) 多维数组
//二维数组
int[][] array ={
{0,1,2,3},
{4,5,6,7},
{8,9,10,11},
{12,13,14,15}
}
//不规则数组
1
1 2
1 2 3
1 2 3 4
int[][] array = new int[4][];
for(int i=0;i<4;i++){
array[i] = new int[i+1];
}
Java基础 之一 基本知识的更多相关文章
- Java基础语法学习知识
基础概念 标识符1.由字母,数字,下划线,美元符组成2.首字母不能是数字3.不能是关键字和保留字4.能反映其作用 关键字1.有特定含义2.用于特定地方3.用来命名标识符 常量1.程序执行时值不变的量2 ...
- Java基础00-基础知识练习12
1. 减肥计划 1.1 if语句实现 import java.util.Scanner; public class Demo01 { public static void main(String[] ...
- 初识Java Java基础知识
今天给大家带来的是初级Java基础部分的知识:包括初识Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!!!内容.步骤超详细,附有各种案例的源代码(可以直接 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java基础知识系列——String
最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...
- 学习android学习必备的java基础知识--四大内部类
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...
随机推荐
- Monolog - Logging for PHP
github地址:https://github.com/Seldaek/monolog 使用 Monolog 安装 核心概念 日志级别 配置一个日志服务 为记录添加额外的数据 使用通道 自定义日志格式 ...
- centos8使用hostnamectl管理主机名称
一,查看hostnamectl所属的包: [root@yjweb ~]# whereis hostnamectl hostnamectl: /usr/bin/hostnamectl /usr/shar ...
- IDEA 半天卡住buid(编译)不动——解决办法(适用于maven及gradle)及定位思路
[号外号外!] 最终解决办法并不复杂,关键在于"遇见问题,怎么样层层分析,多条路径试错,最终解决问题的思路或者能力"--资深码农的核心竞争力之一 背景 今天结束完最近2个月的一个项 ...
- C++实现求离散数学命题公式的真值表
一.实验内容 (1)求任意一个命题公式的真值表. (2)利用真值表求任意一个命题公式的主范式. (3)利用真值表进行逻辑推理. 注:(2)和(3)可在(1)的基础上完成. 二.实验目的 真值表是命题逻 ...
- javascript模块化(简)
这里书写一个个人理解以及整理的东西,关于模块化以及ES6语法推荐大家阅读阮一峰老师的ES6入门教程 地址:https://es6.ruanyifeng.com/ 比较散,请见谅 以前的js是没有模块化 ...
- 使用TypeScript给Vue 3.0写一个指令实现组件拖拽
最近在用vue3重构后台的一个功能.一个弹窗组件,弹出一个表单.然后点击提交. 早上运维突然跑过来问我,为啥弹窗挡住了下边的表格的数据,我添加的时候,都没法对照表格来看了.你必须给我解决一下. 我参考 ...
- git的远程分支是干啥的,和本地的有什么区别?
不知道大家有没有经历过,当我们切换到了一个新的分支想要提交代码的时候,总会遇到这样的错误. 我们把日志里的英文翻译过来是说,我们当前的分支没有设置任何上游分支.然后git提示我们可以运行下面这行代码来 ...
- 使用 Filebeat 对多行日志进行处理(multiline)
Filebeat 收集日志的过程中,默认是按行收取的,也就是每一行都会默认是一个单独的事件并添加时间戳.但是在收集一些特殊日志的时候,往往一个事件包含有多行,例如 Java 的堆栈跟踪日志: 20-0 ...
- python实现银行系统模拟程序
银行系统模拟程序 关注公众号"轻松学编程"了解更多. 1.概述 使用面向对象思想模拟一个简单的银行系统,具备的功能:管理员登录/注销.用户开户.登录.找回密码.挂失.改密.查询 ...
- [Luogu P2831] 愤怒的小鸟 (状压DP)
题面: 传送门:https://www.luogu.org/problemnew/show/P2831 Solution 首先,我们可以先康一康题目的数据范围:n<=18,应该是状压或者是搜索. ...