博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记(2)
阅读量:7242 次
发布时间:2019-06-29

本文共 5927 字,大约阅读时间需要 19 分钟。

有不足之处,请大家指出

一、 基础知识

1SDK的最新下载

搜索oracle,进入网站,à Downloads –> JavaSEI à 选第一个下载(其实java 8u1118u112的区别就是在8u111的基础上优化了一下,升了下级,实际使用没什么区别的

 

 

其次注意一下选32还是64Liunx系统还是Windows系统,其中X86指的是32

 

最后图中选中第一个按钮同意,如果不选默认是第二个不同意

 

 

显示的一般都是最新的版本,如果要下载旧版本通过搜索可以找到

 

2PATH目的

Java的环境变量有path环境变量和classpath环境变量。编译的过程中,我们无法同时运行JDKJava的开发工具:java development kit记事本编写java程序设置path的环境变量实际就安装JDK的路径,这样,你在运行的时候就可以直接输入你编程的程序路径就好了,而不用输入JDK的路径

 

3、初学要注意的几点:

1.在记事本编写完程序后忘了保存

2.写完保存好代码后,在cmd运行时输入路径要输入正确的路径

3.编译字节码文件:javac 文件名  回车

4.运行代码: java 类名  注意这儿不是文件名

5.写固定语句出错,尤其是写main函数写错的时候,运行时并不会报错,因为那个还是函数,只是变成了普通函数了,一定要注意的一点

Java的源文件扩展名是.java, 字节码文件扩展名是.class

对于初学者,多练、多问、自己主动去调试、复习和总结是自我感觉最好的学习方法

 

4、关键字和标识符

1Java中的关键字是用来一些特殊用途的词,Java中关键字严格区分大小写

2、标识符是用来在程序中定义变量、类、方法等的命名符号

 

5、变量

<1、命名:使用驼峰命名法,第一个单词的首字母大写,其它的首字母小写。而且变量名要见名知意。

<2、使用

 可以先声明一个或多个变量,再赋值

 可以在声明一个变量的时候直接赋值

 

int a1,a2,a3,a4;a1 = 10;int a= 10;char c = 'a';short s= 10

注意先声明后使用,先赋值才能输出

 

6Java的数据类型

<1基本数据类型常见的用intcharbooleanbyte等类型,存的是本身

<2、引用数据类型:Stringclass、数组等,存的是数据的空间地址

<3、数据类型转换中需要注意的点

凡是short byte ,char 定义的变量,在做运算的时候数据类型都会自动转换为int

两个不同数据类型做运算,给过取决于大的数据类型。

 

<4、自动类型转换

       目标类型和源文件类型要兼容  int型就不能兼容char型和字符串型

short s= 100;int i = s; // 自动类型转换int num1 = 10;float num2 =10.0f;//默认是double ,float就在数据后面加f

小数据转换成大数据:目标类型要大于源类型 如int类型可以转换成double类型,但是反过来就会出错

 

<5、强制转换类型

  大数据转换成小数据:就像上述讲的,自动类型转换不能讲int类型转换成double类型,可以通过强制转换,但是建议少用,因为可能会造成数据丢失。

 

long l = 100000L; // 长整型的需要在后面加一个Lint a = (int)l; // 强制类型转换 ,也是通过变量前面用小

 

 

6、进制的转换

整数常量的表现形 à进制的形式表示(二进制、八进制、十进制、十六进制

 

1、进制的认识

生活中:还有其他的进制,如星期(进制 0-6时间(十二进制 0-11))、二十四进制(0-23

计算机使用二进制来读生活中的数据,计算机只能识别01就像开关一样只有两种方式

 

2、进制之间的转换

十进制转换成二进制:将这个数2直到商为0将余数从下至尚连接起来就是二进制的数

 

二进制转换成十进制:从左至右将二进制的每一位乘2 ^n-1),然后相加,就是十进制

 

八进制和十进制以及十进制和十六进制的转换一样的原理

 

二进制转成八进制:

思路一:二进制à 十进制à 八进制

思路一个八进制相当于三个二进制二进制三位分割成一位

010 100 101 = 245

  第二种思路比较简单,也就是8421最常见的BCD编码,二进制换成十六进制,也是相同的原

一个十六进制相当于四个二进制,将二进制四位分割成一位

0000 1010 0101 = a5

十六进制的表示:1-9,10-15用A-F表示

 

 

二.运算符。

1.1算数运算符:+,-,*,/,%    

 

short s1 = 10;short s2 = 20;short s3 = s1 + s2; // 报错, s1和s2做运算时会自动变为int类型//正确的写法:int = s1 + s2;short s3 = (short)(s1 + s2);   //常见错误题:

 

1.2自增自减 :++ --

int a = 10;int b = a++; b =10  a =11   //++在后 先赋值后运算int b1 = ++a; b1 =12 a =12  //++在前 先运算在赋值,减减一样

 

1.3赋值运算符 : = +=-=*=/=

见错误题:

int a = 0;a+=10; // a = a + 10;short b = 10;short c = 5;b+=c;  // b = b + c  //没有问题. 会转成int时再自动强转为short//b = b+c;  //下面这种写法是错误的。

 

 

1.4关系运算符 : >,<,>=,<=,== ,!=

关系型运算符 (比较运算符) : 结果只有一种boolean类型 要么是true(对 ,要么是false(错

 

如果判断基本数据类型,比较的变量的两个

如果是比较引用类型,比较的是引用的地址值

1.5逻辑运算符: & ,| ,! ,&& ,|| 

&& &区别和联系:

相同点 结果是一样的

不同点 :如果用双&号判断,如果说条件一为false,不会判断条

件二,但是单&号会继续判断

 

|| |

相同点 结果一样。

不同点 如果用||号判断,如果说条件一为true,不会判断条

件二,但是单|号会继续判断

 

 

1.6位运算符:

它是对二进制位进行计算。

位运算符是可以对十进制的整数进行计算,计算方式:将十进制转为二进制进行计算

 

二进制由01组成,所以计算的结果要么是0,要么是1

1位运算符的符号:

<1& () 两者都是1的时候我就是1,其他都是0

 

 

 

int a = 6;int b = 3;System.out.println(a&b);   // 2 /*原理:1111-1111 1111-1111 1111-1111 1111-0110  6&1111-1111 1111-1111 1111-1111 1111-0011  21111-1111 1111-1111 1111-1111 1111-0010  =2  */

 

 

<2|()  两者都为0时才为0 ,其他的都是1

 

int a = 6;int b = 3;System.out.println(a|b);   // 7/*1111-1111 1111-1111 1111-1111 1111-0110  6|1111-1111 1111-1111 1111-1111 1111-0011  21111-1111 1111-1111 1111-1111 1111-0111  =7*/

 

<3^(异或): 两者不同为1,相同为0

 

int a = 6;int b = 3;System.out.println(a^b);   // 5/*1111-1111 1111-1111 1111-1111 1111-0110  6^1111-1111 1111-1111 1111-1111 1111-0011  21111-1111 1111-1111 1111-1111 1111-0101  =5*/

 

 

 

<4~(取反)  0变为11变为0.

 

int a = 6;int b = 3;System.out.println(~a);   // -7/*~1111-1111 1111-1111 1111-1111 1111-0110  61111-1111 1111-1111 1111-1111 1111-1001  =-7*/

 

如图6取反为-7,-7取反同样是6,所以个人得出结果是:正数取反变为负数再-1,负数取反变为正数也-1

 

 

 负数的表现形式: 二进制位的最高位为1,那么这个数就是一个负数

 

/*1111-1111  1111-1111 1111-1111 1111-1111 : -10000 0000 0000 0000 0000 0000 0000 0000 : 0-2:1111-1111  1111-1111 1111-1111 1111-1110-3:1111-1111  1111-1111 1111-1111 1111-1101-4:1111-1111  1111-1111 1111-1111 1111-1100-5:1111-1111  1111-1111 1111-1111 1111-1011-6:1111-1111  1111-1111 1111-1111 1111-1010-7:1111-1111  1111-1111 1111-1111 1111-10010000-0000  0000-0000 0000-0000 0000-0111  = 7*/

 

规律:正数取反变为负数-1

   负数取反变为正数-1

 

作用数据进行加密

如123456可以0-100 a-z26字母组成,再加上&|^~运算符的应用

24845845957512317580960  --- >123456

 

1.7移位操作符:对二进制位进行操作

1  >>  右移

2  <<  左移

3  >>> 无符号右移

右移:        System.out.println(6>>1); // --->3  6/2  2*1        System.out.println(6>>2); // --->1  6/4  2*2        System.out.println(6>>3); // --->0  6/8  2*3        System.out.println(6>>4);        System.out.println(9>>1); // --->4   9/2  2*1        System.out.println(9>>2); // --->2  9/4  2*2        System.out.println(9>>3); // --->1  9/8  2*3        System.out.println(9>>4);//  --->0  9/16            System.out.println(-6>>1); //  -6/2 -->-3 规律: 右移多少位,就用需要移动的数除以2的多少次方。

 

/*左移 :        System.out.println("-----这个是左移的结果----------");        System.out.println(6<<1); // --->12  6*2  2*1        System.out.println(6<<2); // --->24  6*4  2*2        System.out.println(6<<3); // --->48  6*8  2*2*2        System.out.println(6<<4); //---->96  6*16 2*2*2*2        System.out.println(-6<<2);//--->-24                规律: 左移多少位,就用这个数乘以2多少次方。*/

 

/*//>>>无符号的右移        System.out.println(6>>>1); //3        System.out.println(6>>>2); //1System.out.println(-6>>>2); // 1073741822原理:正数的无符号右移与普通右移原理相同*/

 

 

作用  提高运算速率位运算是执行最快

比如: 以最快的方式计算 2*8

  2<<3  == 2*8 = 16

 

 

2.8、三元运算符

     也叫三目运算符:

     结构:

     条件?条件成立执行的结果 :条件不成立执行结果 ;

 

class Demo1 {    public static void main(String[] args)     {        int a = 10;        int b = 9;        int c =  b++>=a ? a++ : b+a;  //注意这儿的b++>=a 是先执行b>=a,然后再执行b++,因为++在后先赋值在运算,这儿会经常搞错的。然后别忘了b++,再执行b+a,所以c值是20;而不是11 / 19        System.out.println(a);  //10        System.out.println(b);  //10        System.out.println(c);  //20

 

 

//需求:Java中两个值交换的三个方法://1.借助中间量int x = 10; int y = 20; int temp = x; x = y; y = temp; //2.数值加减int x = 10; int y = 20; x = x + y; y = x - y; x = x - y; //3.位移运算交换x = x^y;y = x^y;x = x^y;//System.out.println(y^x^x);//System.out.println(x^y^y);

 

转载于:https://www.cnblogs.com/123hqb--/p/6057984.html

你可能感兴趣的文章
我的梦里
查看>>
js中cookie存储以后产生乱码
查看>>
Domino9.0.1FP3下的LDAP、Kerbors详细配置介绍及证书申请颁发
查看>>
HTML5移动游戏平台大战,技术不再主导流量
查看>>
详述Linux配置静态IP、设置DNS和主机名
查看>>
第12课:Spark Streaming源码解读之Executor容错安全性
查看>>
python-高阶函数(函数做返回值)
查看>>
我的友情链接
查看>>
入住51
查看>>
Linux中man命令
查看>>
如何自定义UIBarBtton
查看>>
python学习笔记-Day05-第一部分(再谈装饰器)(递归)
查看>>
BeanShell使用标准Java语法
查看>>
菜鸟学Linux 第046篇笔记 DNS相关概念
查看>>
获取本月的第一天和最后一天
查看>>
backbone.js 框架
查看>>
禁止网站在访问时出现列目录
查看>>
log4j.properties配置与加载应用(转)
查看>>
从右边看二叉树
查看>>
Linux服务器升级安装OPENSSH
查看>>