以此文来警示自己。

大三要结束了。

我从大一下学期开始接触java,两年半了,期间有很努力的自学,也参与了一下项目,满以为自己的java基础应该不错,但今天在网上看了一个视频才发现自己学的是多么的“浅”,知道了自己的java基础还很差。写程序不是可以实现功能就可以了,还要考虑效率。或许定义一个变量只会多占用几个比特位,一个for循环只会多消耗几毫秒,但当一段段代码组成一个个庞大的系统时,弊端就显露出来了,就像视频里说的,我们写出来的项目只会是一个个12306。

或许是科班出身的我们被教的东西不够吧,有些东西还是得自己努力去探索的,即使是基础知识,也不容小觑,因为基础也不是像你想的你们的简单。

下面奉上看视频做的笔记,经验丰富的高手们肯定都知道,望勿喷。

package test;

import java.math.BigDecimal;

public class TestData {

	/**
* 数据类型 :基本数据类型 引用数据类型(自定义)
* 基本数据类型:byte short int long float double char boolean
* 字节 1 2 4 8 4 8 2
*
* float :32位(1+8+23) 符号位+幂指位+数值位
* double:64位(1+11+52)
*/ public static void main(String[] args) {
//给char型赋值有四种方法
char c1 = 'a'; //直接赋值
char c2 = 97; //ASCII码赋值
char c3 = '\u4e2d'; //unicode编码赋值 后面是16进制
char c4 = '\t'; //转义字符
System.out.println(c1+"&"+c2+"&"+c3+"&"+c4+"&"); //a&a&中& & //int型赋值
int n1 = 30; //直接赋值
int n2 = 0b11110; //二进制赋值 0b+ ||30=16+8+4+2 ||除2取余 15_0 7_1 3_1 1_1 0_1 -> 11110
int n3 = 0x1e; //16进制赋值 0x+ ||转二进制 00011110 转16进制 1E
int n4 = 036; //8进制赋值 0+ ||除8取余 3_6 0_3 36
System.out.println(n1+"|"+n2+"|"+n3+"|"+n4+"|"); //30|30|30|30|
//char+int+String 先做加法 再拼接
System.out.println('1'+1+"1"); //501 char型的1表示ASCII码为49 49+1+"1" = 501
//String+int+char 拼接再拼接
System.out.println("1"+1+'1'); //111
//char+char 做加法
System.out.println('1'+'1'); //98 49+49=98
//2.0-1.1
System.out.println(2.0-1.1); //0.8999999999999999
System.out.println(2.0f-1.1f); //0.1
/**
* double: 2.0转为2进制 10.0000000000000000(16位处截断)
* 1.1转为2进制 01.0001100110011001 (1二进制为1, 小数:0.1*2=0.2_0 0.2*2=0.4_0 0.4*2=0.8_0 0.8*2=1.6_1 0.6*2=1.2_1 0.2*2=0.4_0)
* 相减得0.1110011001100111 转为10进制-0.8999999999999999
* float 先按double计算,然后四舍五入为0.9f
* 解决方法:使用BigDecimal
*/ BigDecimal b1=new BigDecimal("2.0");
BigDecimal b2 = b1.subtract(new BigDecimal("1.1"));
System.out.println(b2); //0.9 } }
package test;
//运算符
public class TestOperator { public static void main(String[] args) {
//取模运算符 符号位取决于第一个数
System.out.println(5%3); //2
System.out.println(-5%3); //-2
System.out.println(5%-3); //2
System.out.println(-5%-3); //-2
System.out.println(2%2); //0
System.out.println(-2%2); //0 //非短路运算符[& | ]和短路运算符[&& ||]
int num = 5;
if(++num < 4 && num++ > 1)
System.out.println("qwer");
System.out.println(num);
//结果是:6
//短路运算符前面判断为false 后面的就不再执行了(对与运算来说,对或运算相反)
num = 5;
if(++num < 4 & num++ > 1)
System.out.println("qwer");
System.out.println(num);
//结果是7
//非短路运算符全执行 //按位运算符
//当一个正数%2的n次方时,等价于&(该2的n次方-1)
System.out.println((100&1)==100%2); //true
System.out.println((100&3)==100%4); //true
System.out.println((100&7)==100%8); //true
System.out.println((100&15)==100%16); //true
System.out.println((100&31)==100%32); //true //权限的实现 1:权限1 2:权限2 4:权限3 8:权限4
//以他们的和表示权限 如3=1+2 7=1+2+4 9=1+8
//用自己的权限&某一权限的代表数字 可得知自己有无该权限
System.out.println((9&1)==1); //true 表示有权限1
System.out.println((9&2)==2); //false
System.out.println((9&4)==4); //false
System.out.println((9&8)==8); //true // 在不借助第三块空间的条件下 交换两个数
//使用按位异或运算符
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(a+" "+b); //2 1
//加减法
a = 1;
b = 2;
a = a + b;
b = a - b;
a = a - b;
System.out.println(a+" "+b); //2 1 //不局限的利用for循环
//打印a-z
for(int i = 97;i<123;i++){
System.out.print((char)i);
}
//这样真的好吗? 看看下面的:
System.out.println();
for(char c='a';c<='z';c++){
System.out.print(c);
}
//第二种只利用char的16个位 第一种还需要利用int的32个位 } }

版权声明:本文为博主原创文章,未经博主允许不得转载。

我们的java基础到底有多差 一个视频引发的感想的更多相关文章

  1. 【Java基础】用LinkedList实现一个简单栈的功能

    栈的基本功能 栈的最基本功能是保障后进先出,然后在此基础上可以对在栈中的对象进行弹入弹出,此外,在弹出时,如果栈为空,则会报错,所以还需要提供获取当前栈大小的方法. 构造存储对象Student /** ...

  2. 【死磕 Java 基础】 — 自己动手实现一个 LRU

    大家好,我是大明哥,一个专注于[死磕 Java]系列创作的男人 个人网站:https://www.cmsblogs.com/.专注于 Java 优质系列文章分享,提供一站式 Java 学习资料 LRU ...

  3. java基础—继承题目:编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish

    编写一个Animal类,具有属性:种类:具有功能:吃.睡.定义其子类Fish package zhongqiuzuoye; public class Animal { //属性 private Str ...

  4. 【java基础】随手写的一个日期计算,新手可以看看

    随手写的一个例子, 只是练习下自己的代码布局以及思路.. 1. 先写下简单的测试 2. 根据常用的不用修改的变量抽取出来, 作为常量(常量的命名可能有点不规范,谅解~) 3. 方法的作用不一样, 抽取 ...

  5. java基础常见面试题,这是一篇超长的随笔!!!

    1. Java基础部分....................................................... 4 1.一个".java"源文件中是否可以包括 ...

  6. Java基础部分 2

    一. Java基础部分 2 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 2 2.Java有没有goto? 2 3.说说&和&&am ...

  7. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

  8. Java基础(一):简介

    一.java基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...

  9. 01 Java基础

    Java基础 01 Hello 随便新建一个文件夹,存放代码 新建一个Java文件 文件后缀名为.java Hello.java [注意点]系统可能没有显示文件后缀名,我们需要手动打开 编写代码  p ...

随机推荐

  1. CMake添加-D_DEBUG宏

    Linux下Debug版不会自动添加 _DEBUG宏,只有NDEBUG宏可用. cmake ../src _DCMAKE_BUILD_TYPE=Debug -D_DEBUG 会报错: -D_DEBUG ...

  2. 单片机PWM调制技术

    我们可以看看下图,下图就是一个典型的PWM的波形图. T是一个周期,T1就是高电平所占用的时间,T2就是低电平所占用的时间. 如上图所示T1为脉冲宽度(就是导通时间),周期为T,则输出电压的平均值为U ...

  3. GEFGWT的HelloWorld

    发现一个好玩的东西,gef-gwt,使用它可以轻松的在web上建立gef程序,原文在这里http://gefgwt.org/getting-started/(文章虽然是英文,但是很容易懂,我是按部就班 ...

  4. python MultiProcessing标准库使用Queue通信的注意要点

    今天原本想研究下MultiProcessing标准库下的进程间通信,根据 MultiProcessing官网 给的提示,有两种方法能够来实现进程间的通信,分别是pipe和queue.因为看queue顺 ...

  5. ASP.NET平台下从浏览器地址栏输入之后发生的事

    浏览器一般内嵌两个模块: Socket通信模块 → 浏览器将地址栏的数据及其他的数据放入http协议的请求头文件中,Socket将此http请求数据发送到远程服务器端 浏览器引擎渲染模块 → 浏览器接 ...

  6. Python_如何去除字符串里的空格

    个人想到的解决方法有两种,一种是 .replace(' old ',' new ')  第一个参数是需要换掉的内容比如空格,第二个是替换成的内容,可以把字符串中的空格全部替换掉. 第二种方法是像这样 ...

  7. PLSQL Developer使用技巧

    本文由liuyk80贡献 ·PL/SQL Developer 使用技巧 1.PL/SQL Developer 记住登陆密码 在使用 PL/SQL Developer 时,为了工作方便希望 PL/SQL ...

  8. OOP的基本原则

    OOP的基本原则 点击打开链接

  9. 对ManualResetEvent和AutoResetEvent的巩固练习

    在多线程编程中,最常用到的就是线程同步问题,前段时间开发地址采集服务器,需要携带经纬度到MapAbc中采集后,返回地址,才可以进行下一条经纬度的采集,因为队列处理和解析不是同一个线程,并且是解析经纬度 ...

  10. Python中urllib.urlencode中文字符的一个问题

    Django项目在访问Restful service时调用urllib.urlencode编码中文字符串时碰到下面这个错误. v = quote_plus(str(v)) UnicodeEncodeE ...