首页 > 编程语言 >Java学习

Java学习

时间:2022-12-21 23:12:17浏览次数:49  
标签:arr Java int double 数据类型 学习 str java

下载 

一般使用Java8或Java11 https://www.oracle.com/cn/java/technologies/downloads/#java8-windows

安装

安装路径不要有空格或中文 https://zhuanlan.zhihu.com/p/387618280

Jdk是什么?

  Java development kit    java开发工具包

Jdk包括:

  Jre( java运行环境)、

  一堆java工具(java编译器javac.exe  java解释执行器java.exe)、

  java基础类库(3600多)常用类150多个

为什么配置环境变量

当前执行程序在当前目录下如果不存在,win10系统会在已有的名为path的环境变量指定的目录中查找

 

 

java在线API

https://www.matools.com/api/java8

 

程序文件说明

Hello.java  源文件  通过javac.exe编译成.class文件

Hello.class 字节码文件   通过java.exe运行在JVM(虚拟机)

public class HelloWorld {
    public static void main(String []args) {  // 固定写法,不可改变
       System.out.println("Hello World!"); // Java必须带分号
    }
}

 

java在线工具

https://c.runoob.com/compile/10/

数据类型

 

字符类型

使用单引号,单个字符,精度2个字节(可以放汉字)

本质是整数,输出时输出Unicode码对应的字符 ,可以运算

多个字符用String类

char c1 = 'a';
char c2 = '\t';  // 可以放转义字符
char c3 = '汉';
char c4 = 97; // 字符类型可以存放数字,输出ASCII对应的字符a

ASCII编码表:一个字节,128个字符(实际上一个字节可以表示256字符,ascii只用了128个)

Unicode编码表:兼容ASCII固定大小 2个字节(共65536个字符),字母和汉字都会用2个字节,浪费空间

utf-8编码表:大小可变的编码 字母使用1个字节,汉字使用3个字节

gbk:可以表示汉字,范围广,字母使用1个字节,汉字使用2个字节

gb2312:(可以表示汉字,gb2312<gbk))

big5码:繁体中文,台湾香港

数值类型

~ Java的整数数据类型有固定的范围和字段长度,不受操作系统影响-可移植性

~ Java的整型常量默认为int 申明long后面必需加'l','L'

 

 

~ Java的浮点型常量默认为 double型 float型后面必需加‘f'或'F'

~ 表现形式:十进制          5.0f   .23  5.12 (必需有小数点) 3d

                  科学计数法    5.12e2  5.12E-2

~ 浮点数在及其中存放形式:浮点数=符号位+指数位+尾数位(可能丢失,精度损失,小数都是近似值)

 ~ 浮点数相除后,计算机计算出的精度不正确,如何比较大小:两个数的插值的绝对值非常小

比如  Math.abs(num1-num2) < 0.0000001  就判断是相等的

类型转换

自动类型转换

注意

~ 多种数据类型混合计算时,首先自动将所有数据转换成容量最大的数据类型,再计算

~ 精度大的数据赋值给精度小的会报错

~ (byte,short)和char之间不会自动转换

~ byte short, char 3者可以计算,会先转为int

~ boolean不参与转换,值永远是true或false

~ 自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型

强制类型转换(精度大->精度小)

强转符号只对最近的数值有效 会损失精度或者溢出

int i = (int)1.9 // 1
int x = (int)(8*1.1)

基本数据类型 -> String类

double i = 1.22;
String str  = i + '';

String -> 基本数据类型   使用 基本数据类型对应的包装类,的相应方法

String str = "123";
byte b = Byte.parseByte(str);
short s  = Short.parseShort(str);
int i = Integer.parseInt(str);
long l = Long.parseLong(str);
float f = Float.parseFloat(str);
double d = Double.parseDouble(str);
boolean boo = Boolean.parseBoolean("true");
str.charAt(0); // 字符串转成字符char: 得到第一个字符

 

运算符

算数运算符

10/3 = 3

 

关系运算符

逻辑运算符

区别

&&:如果第一个条件为false,则第二个条件不会执行

&:两个条件都要执行

||:如果第一个条件为true,则第二个条件不会执行

|:两个条件都要执行

赋值运算符

基本:=

复合:+= -= *=  /= 

~ 复合赋值运算符会进行类型转换

byte b = 3;
b += 1; // 等价于 b = (byte)(b + 1);
b = b + 1; // 会报错

三元运算符

条件表达式 ?表达式1 :表达式2

~表达式1和表达式2要为可以赋值给接收变量的类型(或可以自动类型转换)

运算符优先级

 

进制

进制转换1

二进制转十进制

从右往左   0b111 = 1 * 20+ 1 * 21 + 1 * 2= 1+2+4

八进制转十进制

从右往左   0111 = 1 * 80 + 1 * 81+ 1 * 82= 1+8+64

十六进制转十进制

从右往左   0x111 = 1 * 160 + 1 * 161+ 1 * 162= 1+16+256

进制转换2

十进制转二进制

规则:将该数不断除以2,直到商为0为止,然后将每部得到的余数倒过来

十进制转八进制

规则:将该数不断除以8,直到商为0为止,然后将每部得到的余数倒过来

十进制转十六进制

规则:将该数不断除以16,直到商为0为止,然后将每部得到的余数倒过来

进制转换3

二进制转八进制

规则:从右往左,将二进制每3位一组,转成对应的八进制

0b11(3)010(2)101(5)   => 0325

二进制十六进制

规则:从右往左,将二进制每4位一组,转成对应的十六进制

0b1101(D)0101(5)   => 0xD5

进制转换4

八进制转二进制

规则:从右往左,将八进制每1位,转成对应的3位二进制

02(010)3(011)7(111)   => 0b0010011111

十六进制二进制

规则:从右往左,将十六进制每1位,转成对应的4位二进制

 02(0010)3(0011)B(1011)  => 0b001000111011

 

位运算

原码,反码,补码:为什么这么设计--为了解决正数负数

 

程序控制结构

if else

for

while

do while

switch

continue

break

return

public class HelloWorld {
    public static void main(String []args) {
       // 输出a-z
       for(char c1 = 'a'; c1 <= 'z'; c1++) {
            System.out.println(c1 +" ");
       }
    }
}

 

数组

数组:存放多个同一类型的数据,引用类型, 是个对象

数组动态初始化

数据类型 数组名[] = new 数据类型[大小]

double[] list = new double[5]; // 等价于
double list[] = new double[5];  // 先声明和new
list[0] = 1.1; // 再赋值

数组创建后,如果没有赋值,会有默认值

int 0,  short 0,    byte 0,  long 0,  float  0.0   double 0.0   char \u000   boolean  false    String null

数组静态初始化

double[] arr = {1, 3, 5, 4,3, 6.9, 7};

double sun = 0;
for (int i = 0; i < arr.length; i++) {
   sum += arr[i];
}

数组拷贝

数组是引用类型,拷贝时是拷贝地址

int[] arr1 = {1,1,3};
int[] arr2 = new Int[arr1.length]; // 重新开辟空间

数组下标必须在指定范围内,否则报错

数组反转

int arr[] = {11,22,33,44,55,66};
int temp = 0;
int len = arr.length;
for( int i = 0; i < len/2; i++ ) {
    temp = arr[len-1-i];
    arr[len-1-i] = arr[i];
    arr[i] = temp;
}

数组排序

1 内部排序:数据量少,在内存中排序(交换式排序法,选择式,插入式)

2 外部排序:数据量多,需要借助外部存储器(合并排序)

冒泡排序

从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。

以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。

 

 

 

标签:arr,Java,int,double,数据类型,学习,str,java
From: https://www.cnblogs.com/tingying/p/16894367.html

相关文章

  • FreeSWITCH学习笔记:日志
    本文更新于2022-12-21,使用FreeSWITCH1.10.7。目录拨号计划媒体协商NAT打洞RTP自动调整local_stream流主叫号码翻转常见日志示例如下。拨号计划a5fe78c0-84cd-11ec-9fd......
  • Javaweb 登陆与验证码
    本次记录分角色登陆以及验证码的Servlet。1.登陆验证<html><%--CreatedbyIntelliJIDEA.User:jiachenglinDate:2022/11/11Time:14:31Tochangethis......
  • javaScript中??和?.简记
    ??表示:只有当左侧为null和undefined时,才会返回右侧的数;空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为[null]或者[undefined]时,返回其右侧操作数,否则返回左侧操作数;......
  • 机器学习——信用分数分类
    一、选题的背景假设一家金融公司需要对用户的信用进行快速的评分,并对其信用等级进行分类,如果使用人工进行分类无疑是需要耗费大量的人力和时间。该公司收集了用户的银行详......
  • 你能说说Java中Comparable和Comparator的区别吗
    之前面试中被问到这个问题,当时不屑(会)回答,下来特意查了查,整理如下。Java中为我们提供了两种比较机制:Comparable和Comparator,二者都是用来实现对象的比较、排序。下面分......
  • C++学习---cstdio的源码学习分析09-设置文件流buffer函数setbuf
    cstdio中的文件访问函数stdio.h中定义了一系列文件访问函数(fopen,fclose,fflush,freopen,setbuf,setvbuf),接下来我们一起来分析一下setvbuf对应的源码实现。-fopen:打开文件-......
  • Json字符串,JsonObject,Java对象相互转换
    Json字符串,JsonObject,Java对象相互转换1、Java对象类 publicclassUser{privateStringname;privateIntegerage;publicUser(){}publicUse......
  • 分布式数据库各回滚恢复工具学习(binlog2sql,MyFlash,my2sql ...)
    1、背景:DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此......
  • PyTorch 深度学习实践第五讲(用PyTorch实现线性回归)
    基本步骤上课代码importtorchx_data=torch.Tensor([[1.0],[2.0],[3.0]])y_data=torch.Tensor([[2.0],[4.0],[6.0]])#x与y必须是矩阵classLinearModel(torch.n......
  • [机器学习] t-SNE聚类算法实践指南
    ​ 转载于比PCA降维更高级——(R/Python)t-SNE聚类算法实践指南-阿里云开发者社区作者介绍:Saurabh.jaju2  Saurabh是一名数据科学家和软件工程师,熟练分析各种数据集和......